Всем привет.
Занимаясь очередным полигоном как всегда понадобился доступ к хосту по SSH. На сей раз хост виндовый. PuTTY? Ну конечно, но для автоматизации процесса хочется чего нибудь из командной строки. И, о счастье, оказывается добрые люди создали модуль Posh-SSH для простого доступа по SSH и SCP из PowerShell.
Модуль Posh-SSH позволяет:
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
Успехов всем.
Занимаясь очередным полигоном как всегда понадобился доступ к хосту по 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
А что вы думаете по этому поводу?