1

На моем хосте vmWare работает гостевая виртуальная машина Linux, к которой я хочу получить доступ с помощью Windows PowerShell ISE. Я обычно могу SSH к моей виртуальной машине, но я не могу с Windows PowerShell ISE.

Когда я пытаюсь выполнить SSH для моей виртуальной машины, операция SSH застревает и не отображает дальнейшую консоль или сообщение. Я использую SSH-клиент, который поставляется с GIT, Windows 8.1 и vmWare Workstation 10.

PS C:\> ssh esis@192.168.255.142
ssh : Warning: Permanently added '192.168.255.142' (RSA) to the list of known hosts.
At line:1 char:1
+ ssh esis@192.168.255.142
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Warning: Perman...of known hosts.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

1 ответ1

1

Это ограничение PowerShell ISE. Любое приложение, которое попытается управлять панелью консоли, завершится сбоем и / или застрянет.

Некоторые из этих команд уже занесены в "черный список", вы можете увидеть их в $psUnsupportedConsoleApplications .

Видимая ошибка, вероятно, вообще не имеет значения: ssh записывает информацию в stderr, а PowerShell генерирует ошибку поверх этого сообщения.

Но это тот факт, что ssh нужен полный контроль над консолью, на которой вы ее запускаете (например, чтобы вы могли запускать такие вещи, как vim), это "замораживает" ISE. Чтобы увидеть ту же проблему со встроенными приложениями, вы можете попробовать то же самое с netsh:

$psUnsupportedConsoleApplications.Remove('netsh')
netsh

Это должно также заблокировать ISE, по тем же причинам ssh блокирует его.

Кстати: если вы хотите просто запустить несколько команд, plink.exe может быть лучшим инструментом, чем "обычный" ssh. Он отлично работает в ISE, потому что не пытается захватить консоль.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .