SSH через PowerShell


54

Можно ли открыть сеанс SSH в PowerShell? В настоящее время я использую PuTTY, но было бы неплохо, если бы это не требовалось.


1
Я знаю, что это не поддерживается изначально, но я бы тоже хотел увидеть решение.
egorgry

5
что не так с просто вызывать putty.exe (или plink.exe) из командной строки?
Хавьер

4
Хавьер: Начнем с того, что plink является только SSH-клиентом и полностью лишен функций эмуляции терминала.
Гравитация

+1, я бы хотел увидеть решение сам. И по большей части я очень ненавижу замазку. (Пользователь SecureCRT)
Urda

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
Cygwin? Блек! С таким же успехом можно запустить виртуальную
машину

Как так ? ssh - исполняемый файл Windows. Если вы не хотите взаимодействовать с Unix-Y, не удивительно, что для этого вам нужно установить некоторые библиотеки.
raph.amiard

Посмотрите ответ Амира Дина, я думаю, что это лучшее решение здесь и прекрасно работает.
Хош Садик

1
@HoshSadiq Из описания OpenSSH для Windows: «Установщик для минимальной установки среды Cygwin, подходящей для запуска сервера OpenSSH на платформе Windows».
Дуглас Ладлоу


1

Если целевой машиной является Windows, то вместо этого вы можете использовать PowerShell Remoting .

Это определенно не то же самое, что SSH. Есть плюсы (возвращение объектов по проводам!) И минусы (что, если целью является Linux?).




1

Один из способов получить очень хороший нативный ssh-клиент - установить git из GitHub ( https://windows.github.com/ ).

Он создает ярлык для шикарного окна со всеми путями, правильно настроенными для использования git в powershell. Это автоматически идет с двоичными файлами ssh и scp в пути.

Я не уверен, что это за реализация, но она действительно похожа на Linux, то есть не чувствует, что она основана на .Net или использует командлеты powershell.

Он забирает закрытый ключ, который я настроил в $ home / .ssh / в формате openssh, и, возможно, кто-то может подтвердить. Такое ощущение, что это openssh.

Чтобы сделать его еще лучше, я включил его в свой обычный профиль powershell, выполнив в своем профиле $ следующее. Это означает, что мне не нужно использовать ярлык Github.

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


1

Posh-SSH Это бесплатный модуль от Poswershell Magazine, который работает для Powershell 3.0 и выше.

Он доступен по адресу http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Полная документация предоставляется по ссылке выше. В сценарии вам не нужны интерактивные соединения, так что это два шага. 1-й создать сеанс. 2-й отправить команды.

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

Первый сеанс, который вы создадите, будет иметь индекс 0.

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

Рекомендуется помещать создание соединения в попытку try и проверять существование сеанса перед выполнением команды. Это делает взаимодействие с серверами Linux внутри скрипта powershell хорошо работающим.


-2

SSH и SFTP, несомненно, представляют отраслевой стандарт в приложениях безопасного удаленного доступа. К счастью, установление соединения может быть очень быстрым и простым. К сожалению, правда в том, что есть много возможностей потратить время на поиск неисправностей.

К сожалению, в Windows нет стандартного ssh-клиента или программного обеспечения deamon.

Это приводит к появлению более или менее причудливых реализаций, открытого исходного кода, бесплатного программного обеспечения, условно-бесплатного программного обеспечения и т. Д., Иногда работающего иногда нет.

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

cygwin - лучшее доступное решение.

putty / plink / winscp в качестве клиентского программного обеспечения. это также хорошо для сценариев.

Есть ssh deamons для интеграции Windows, но решения более или менее нестабильны.

самый стабильный способ запустить ssh deamon на windwos - это запустить его внутри виртуальной машины Linux, можно реализовать с помощью небольшого дистрибутива linux.


4
Это на самом деле не отвечает на вопрос ОП. Можете ли вы отредактировать свой вопрос, чтобы указать, почему cygwin является решением вопроса, поставленного ОП?
Я говорю Восстановить Монику

OP не запрашивает альтернатив, кроме решений, связанных с PowerShell.
cychoi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.