SSH через PowerShell


54

Чи можливо відкрити сеанс SSH в PowerShell? В даний час я використовую PuTTY, але було б непогано, якби це не було потрібно.


1
Я знаю, що це не підтримується споконвічно, але я також хотів би побачити рішення.
egorgry

5
що не в тому, щоб просто зателефонувати putty.exe (або plink.exe) з командного рядка?
Хав'єр

4
Хав'єр: Почнемо з того, що планк є лише клієнтом SSH і повністю не має функцій емуляції терміналу.
grawity

+1, я хотів би сам побачити рішення. І здебільшого я так ненавиджу шпаклівку. (Користувач SecureCRT)
Урда,

1
Microsoft оголошує про майбутню підтримку SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Відповіді:



9

Я написав модуль для роботи з сесіями SSH від PowerShell, на основі бібліотеки SSH.NET, знайденої на CodePlex. У ньому є New-SshSession для створення з'єднань (підтримується кілька цілей за допомогою різних облікових даних), а потім ви можете використовувати Invoke-SshCommand для запуску команд проти будь-якої кількості цільових хостів. Навіть є Enter-SshSession, який має дуже основну, інтерактивну оболонку.

Стаття тут .

Йоаким


6

Завантажте OpenSSH для Windows та виберіть для встановлення лише клієнт під час встановлення. Весь інсталятор, що включає сервер, становить менше 3 Мб, і клієнт працює чудово.


2
У цьому проекті є багато попереджень про те, що інсталятор заглушує змінну System PATH у Windows 7 та 8 - будьте обережні!
Патрік М

2

Я все ще публікую відповідь на це запитання, тому що я визнав, що прийнята відповідь зовсім не відповідає моїм потребам (лише платне рішення чи інше, що не справляється з терміналом добре).

Тож очевидним рішенням цієї проблеми є встановлення cygwin. Зробіть мінімальну інсталяцію, якщо ви просто хочете ssh, але, оскільки powershell забезпечує базовий рівень сумісності з * nix оболонками (основні команди все ще є, "/" для каталогів тощо), реально можна використовувати cygwin речі всередині Powershell.

Cygwin встановити тут


1
Сігвін? Блек! Можливо, добре підпалити ВМ ...
Урда,

Як так ? ssh - це вікно, складене виконуваним файлом. Якщо ви не хочете взаємодіяти з Unix-y, це не повинно бути несподіванкою, що для цього вам доведеться встановити кілька ліб.
raph.amiard

Дивіться відповідь Ameer Deen, я думаю, що це найкраще рішення тут і чудово працює.
Hosh Sadiq

1
@HoshSadiq З опису OpenSSH для Windows: "Установник для мінімальної установки середовища Cygwin, придатного для запуску сервера OpenSSH на платформі Windows."
Дуглас Людлоу


1

Якщо цільова машина - це вікно Windows, ви можете використовувати PowerShell Remoting .

Це точно не те саме, що SSH. Є плюси (повернення об’єктів через дріт!) І мінуси (що робити, якщо ціль - Linux?).




1

Один із способів отримати дуже хорошого рідного ssh-клієнта - це встановити git від GitHub ( https://windows.github.com/ ).

Він створює ярлик до вікна posh-git з усіма шляхами, встановленими правильно, щоб використовувати git в powershell. Це автоматично поставляється із бінарними файлами ssh та scp на шляху.

Я не впевнений, що це за реалізація, але він має таке відчуття як Linux, тобто він не відчуває себе таким, як є.

Це підбір приватного ключа, який я налаштував у $ home / .ssh / у форматі opensh, і, можливо, хтось може це підтвердити. Це здається, що це відкрито.

Щоб зробити це ще краще, я інтегрував його у свій звичайний профіль повноважень, зробивши наступне у своєму $ профілі. Це означає, що мені не потрібно використовувати ярлик ярда.

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_*\profile.example.ps1")


1

Posh-SSH - це безкоштовний модуль журналу Poswershell, який працює для Powershell 3.0 і вище.

Він доступний на веб- сайті http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Повна документація надана за посиланням вище. У сценарії вам не дуже потрібні інтерактивні з'єднання, тому це два кроки. Перше створіть сеанс. 2-й команди відправки.

$ServerConnection = New-SSHSession -KeyFile $keyLocation -ComputerName $sshComp -Credential $mycreds -AcceptKey

Перший створений вами сеанс матиме індекс 0.

Invoke-SSHCommand -Index 0 -Command "some command to run over ssh"

Найкраще застосовувати створення з'єднання у спробу вилову та перевірити існування сеансу перед запуском команди. Це змушує взаємодію з Linux-серверами зсередини скрипта повноважень працювати добре.


-2

SSH та SFTP безсумнівно представляють галузевий стандарт у захищеному застосуванні віддаленого доступу. На щастя можливо, що встановлення з'єднання може бути дійсно швидким та простим. На жаль, правда полягає в тому, що існує багато можливостей витрачати час на усунення несправностей.

На жаль Windows не має стандартного клієнтського ssh або deamon-програмного забезпечення.

Це призводить до того, що зоопарк більш-менш вигадливих реалізацій, відкритого коду, безкоштовної програми, програмного забезпечення та інше ... десь працює інколи.

У вікнах - це гроші. Microsoft просто не хоче, щоб багато користувачів легко підключалися до 1 ліцензованого комп'ютера. Вони хочуть продати власні рішення. Тому вони не пропонують рідний ssl.

cygwin - найкраще доступне рішення.

putty / plink / wincp як клієнтське програмне забезпечення. це також нормально для сценаріїв.

є ssh-діамони для інтеграції Windows, але рішення більш-менш нестабільні.

найстабільніший спосіб запустити ssh deamon на windwos - це запустити його всередині Linux VM, що може бути реалізовано за допомогою невеликої дистибуції Linux.


4
Це насправді не відповідає на питання ОП. Чи можете ви відредагувати своє запитання, щоб вказати, чому cygwin є рішенням питання, поставленого ОП?
Я кажу: Відновіть Моніку

ОП не просить інших альтернатив, ніж пов'язані з PowerShell рішення.
cychoi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.