А АWednesday 30 May 2018

Простой доступ по SSH и SCP в PowerShell.

Всем привет.

Занимаясь очередным полигоном как всегда понадобился доступ к хосту по SSH. На сей раз хост виндовый. PuTTY? Ну конечно, но для автоматизации процесса  хочется чего нибудь из командной строки. И, о счастье, оказывается добрые люди создали модуль Posh-SSH для простого доступа по SSH и SCP из PowerShell.

Модуль Posh-SSH позволяет:

  • устанавливать сессии SSH и SFTP по кредитам или используя OpenSSH ключ
  • подключаться через SOCKS и HTTP прокси для обоих видов SSH и SFTP сессий
  • исполнять команды по одиночке посылая их в SSH
  • загружать и скачивать файлы использую SCP и SFTP протоколы:

Set-SCPFile, Get-SCPFile, Get-SCPFolder, Set-SCPFolder, Get-SFTPFile – download a specified file from a remote SFTP session, Move-SFTPFile – moves a specified file in a remote hosts through SFTP, Remove-SFTPFile – deletes a specified file in a remote hosts through SFTP, Set-SFTPFile – uploads a specified file to a given path using SFTP.

Для SSH поддерживается аутентификация по ключу, логину и паролю, ввод с клавиатуры.
Поддерживаются разные алгоритмы шифрования, прокси. Минимальные требования - PowerShell 3.0 и .NET 4.0

Проверим!

Добавляем модуль:
>Find-Module Posh-SSH | Install-Module

Что в новом модуле есть для нас:
>Get-Command -Module Posh-SSH

Пробуем. Сначала создаем SSH сессию:
>Import-Module Posh-SSH
>$secpasswd = ConvertTo-SecureString "paССw0rd" -AsPlainText -Force
>$mycreds = New-Object System.Management.Automation.PSCredential ("User03", $secpasswd)
>New-SSHSession -ComputerName 192.168.1.10 -Credential $mycreds -Force



SessionId  Host                                                     Connected
---------  ----                                                     ---------
    0      192.168.1.10                                             True

Отлично, соединение установлено.
Можно выполнить любую команду на удаленном хосте :
>Invoke-SshCommand -index 0 -Command "ipconfig /all"
Host       : 192.168.1.10
Output     : {, ����ன�� ��⮪��� IP ��� Windows, Servak...}
ExitStatus : 0

Заканчиваем работу:
>Remove-SSHSession 0

Как вы заметили локализованный вывод некоторых команд нечитабельный.
По умолчанию кодировка в консоли OEM-866. Можно попробовать это исправить. Вероятно кодировка источника UTF8 (код 65001).
Выполняем в консоли команду смены кодировки CHCP.
>CHCP 65001
Active code page: 65001

Также нужен выбор шрифта Lucida Console в Properties(Свойствах) консоли.

При получении содержимого нужно можно учитывать кодировку в самом командлете, например get-content, и добавлять ключ -Encoding UTF8
Get-Content -Tail 10 -Wait .\SystemOut.log -Encoding UTF8

Успехов всем.

No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное