Так как разговоры Microsoft о ssh через powershell идут давно и его до сих пор нет, то энтузиасты и коммерческие компании решили запилить свои решения.
Одним из таких решений является Posh-SSH. Установку и материал по данному продукту смотрите ниже, если какого то не устраивает данное решение можете воспользоваться другими.
Модуль PowerShell для автоматизации задач на удаленных систем через SSH
Описание
Модуль PowerShell, который использует пользовательскую версию SSH.NET Библиотеки (http://sshnet.codeplex.com/) для обеспечения базовых функций SSH в PowerShell.
Установить
Чтобы установить модуль, включая весь исходный код, вы можете просто запустить в PowerShell версии 3 следующую команду:
iex (New-Object Net.WebClient).DownloadString("https://gist.github.com/darkoperator/6152630/raw/c67de4f7cd780ba367cccbc2593f38d18ce6df89/instposhsshdev")
Поддержка
- Предоставляет функциональные возможности для автоматизации по протоколам SSH, SFTP и SCP действия.
- Поддерживает обмен ключами diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1 и diffie-hellman-group1-sha1 .
- Поддерживает алгоритм шифрования 3des-cbc, aes128-cbc, aes192-cbc, aes256-cbc, aes128-ctr, aes192-ctr, aes256-ctr, blowfish-cbc, cast128-cbc, arcfour и twofish.
- Поддерживает хеширования hmac-md5, hmac-sha1, hmac-ripemd160, hmac-sha2-256, hmac-sha2-256-96, hmac-md5-96 и hmac-sha1-96.
- Поддерживает открытый ключ, пароль и клавиатура-интерактивные методы аутентификации
- Поддерживает RSA и DSA приватный ключ
- Поддерживает DES-EDE3-CBC, DES-EDE3-CFB, DES-CBC, AES-128-CBC, AES-192-CBC and AES-256-CBC алгоритмы закрытого ключа шифрования
- Поддерживает прокси для SOCKS4, SOCKS5 и HTTP
- Переадресации портов
Версия 1.7
- New-SFTPDirectory заменяется новой New-SFTPItem.
- Remove-SFTPFile и Remove-SFTPDirectory заменяются на Remove-SFTPItem.
- Set-SFTPDirectoryPath заменен на Set-SFTPLocation.
- Get-SFTPCurrentWorkingDirectory заменяется Get-SFTPLocation.
- Get-SFTPDirectoryList заменяется на Get-SFTPChildItem.
- Index параметра и свойства теперь SessionId. Все командлеты и функции Индекс в качестве псевдонима, чтобы не нарушить работу существующих скриптов.
- На Set-SCPFile параметр RemoteFile будет изменен на RemotePath и путь куда копировать файл.
- На Set-SCPFolder параметр RemoteFile будет изменен на RemotePath и путь куда копировать папку.
Новые функции New-SSHShellStream для более простого создания оболочки.
C:\PS>$SSHStream = New-SSHShellStream -Index 0 PS C:\> $SSHStream.WriteLine("uname -a") PS C:\> $SSHStream.read() Last login: Sat Mar 14 20:02:16 2015 from infidel01.darkoperator.com [admin@localhost ~]$ uname -a Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [admin@localhost ~]$ |
- Новые функции *Invoke-SSHStreamExpectSecureAction *для прохождения пароля.
C:\PS>Invoke-SSHStreamExpectSecureAction -ShellStream $stream -Command 'su -' -ExpectString 'Passord:' -SecureAction (read-host -AsSecureString) -Verbose *********** VERBOSE: Executing command su -. VERBOSE: Waiting for match. VERBOSE: Executing action. VERBOSE: Action has been executed. True PS C:\> $stream.Read() Last login: Sat Mar 14 18:18:52 EDT 2015 on pts/0 Last failed login: Sun Mar 15 08:52:07 EDT 2015 on pts/0 There were 2 failed login attempts since the last successful login. [root@localhost ~]# |
- функции Invoke-SSHStreamExpectAction для выполнения действия.
- Новая функция Get-SFTPPathAttribute получить атрибуты данного пути.
C:\PS>Get-SFTPPathAttribute -SessionId 0 -Path "/tmp"
LastAccessTime : 2/27/2015 6:38:43 PM LastWriteTime : 2/27/2015 7:01:01 PM Size : 512 UserId : 0 GroupId : 0 IsSocket : False IsSymbolicLink : False IsRegularFile : False IsBlockDevice : False IsDirectory : True IsCharacterDevice : False IsNamedPipe : False OwnerCanRead : True OwnerCanWrite : True OwnerCanExecute : True GroupCanRead : True GroupCanWrite : True GroupCanExecute : True OthersCanRead : True OthersCanWrite : True OthersCanExecute : True Extensions : |
- Новые функции New-SFTPFileStream создать поток ввода-вывода файла на хост через SFTP.
PS C:\>$bashhistory=New-SFTPFileStream-SessionId0-Path/home/admin/.bash_history-FileMode Open-FileAccess Read PS C:\>$bashhistory CanRead : True CanSeek : True CanWrite : False CanTimeout : True Length :830 Position :0 IsAsync : False Name :/home/admin/.bash_history Handle : {0,0,0,0} Timeout :00:00:30 ReadTimeout : WriteTimeout : PS C:\>$streamreader=New-Object System.IO.StreamReader-ArgumentList$bashhistory PS C:\>while($streamreader.Peek()-ge0) {$streamreader.ReadLine()} ls exit ssh-keygen-t rsa mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod600 ~/.ssh/authorized_keys vim/etc/ssh/sshd_config sudo vim/etc/ssh/sshd_config PS C:\> |
- Новые функции New-SFTPSymlink создать символическую ссылку на удаленный узел по протоколу SFTP.
- Новая функция Set-SFTPContent , чтобы получить содержимое файла на удаленном хосте через SFTP
PS C:\>Set-SFTPContent-SessionId0-Path/tmp/example.txt-Value"My example message`n" FullName :/tmp/example.txt LastAccessTime :3/16/201510:40:16 PM LastWriteTime :3/16/201510:40:55 PM Length :22 UserId :1000
PS C:\>Get-SFTPContent-SessionId0-Path/tmp/example.txt My example message
PS C:\>Set-SFTPContent-SessionId0-Path/tmp/example.txt-Value"New message`n"-Append FullName :/tmp/example.txt LastAccessTime :3/16/201510:40:59 PM LastWriteTime :3/16/201510:41:18 PM Length :34 UserId :1000
PS C:\>Get-SFTPContent-SessionId0-Path/tmp/example.txt My example message New message |
- Новая функция Get-SFTPContent установить содержимое файла на удаленном хосте через SFTP.
PS C:\>Get-SFTPContent-SessionId0-Path /etc/system-releaseCentOS Linux release7.0.1406(Core) |
Недостатки
- Нет поддержки сжатия на данный момент.
- После загрузки или выгрузки запускается только способ сброса, закрыв оболочки PowerShell.
- Перенаправление портов все еще недостаточно хорошо поддерживается.
Источник https://github.com/darkoperator/Posh-SSH
Collapsegamer,
инженер по обслуживанию компьютеров организаций,
компания БитПрофи,
г. Москва
Автоматизация малого бизнеса
Автоматизация вашего бизнеса - а вы знали, что ведение бизнеса может быть проще?
Узнать больше>>>