Я пытаюсь подключиться к моему удаленному серверу в рамках подсистемы Windows 10 Linux. Я использую MS Windows 10 Home Insider Preview build 14366.
В командной строке я набираю:
ssh user@domain.com
Через несколько секунд после ввода команды ssh я получаю следующее сообщение:
SSH: подключение к хосту domain.com порт 22: ресурс временно недоступен
Я успешно могу подключиться, используя Putty, а также используя ssh в Git Bash.
Итак, это наводит меня на мысль, что проблема связана с моим локальным компьютером, а точнее с подсистемой Linux. Я все еще очень хорошо разбираюсь в среде Linux и не знаю, как интерпретировать это сообщение. Какой ресурс недоступен и что я должен сделать, чтобы сделать его доступным?
windows-10
bash
ssh
Келл
источник
источник
git
andapt-get
Ответы:
Насколько я могу судить, это ошибка в WSL. Надеюсь, Microsoft исправит это в следующей сборке. Но сейчас мы можем использовать этот немного уродливый хак.
Обновление № 1 : определенно ошибка. Нашел эту проблему на Github. Тир предложил обходной путь перезапуска оболочки, работает и для меня, если вы не хотите проходить через все это.
TL; DR Добавьте это в КОНЕЦ вашей конфигурации SSH (обычно находится в
~/.ssh/config
):Вот почему это работает: Наш SSH вопрос не является вопросом брандмауэра , поскольку
nc
иtelnet
работа на тот же хост и порт (попробуйтеtelnet <host> <port>
илиnc <host> <port>
вы должны увидеть что - то подобноеSSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Это мы можем использовать в наших интересах.SSH позволяет использовать прокси, которые принимают стандартный ввод и отправляют его на порт сервера через
ProxyCommand
опцию. Обычно это используется для туннелирования в сети к защищенному хосту с помощью промежуточного SSH-сервера бастиона, иногда называемого промежуточным хостом (см. Эту ссылку для получения дополнительной информации).Этот хак говорит SSH использовать прокси без хостов перехода. Таким образом, он позволяет обойти неудавшееся распределение ресурсов TCP по протоколу SSH, перенося все ресурсы сетевого ресурса на Netcat, который работает. SSH просто выполняет свою функцию SSH без каких-либо сетевых подключений, а Netcat отправляет необработанные данные через TCP-соединение на сервер SSH.
ВНИМАНИЕ: Так как это изменяетProxyCommand
для всех хостов, я не знаю, как он взаимодействует с другими хостами конфигурации SSH, которые используютProxyCommand
. У меня есть несколько серверов, с которыми я могу проверить это, и я обновлю этот ответ результатами. Есть вероятность, что вредных побочных эффектов нет, но я не могу этого гарантировать.Обновление № 2: Я провел некоторое тестирование с несколькими моими серверами, и это, кажется, работает. SSH использует самую верхнюю запись в конфигурации, когда применяется несколько записей. Таким образом, существующий
ProxyCommand
подарок выше этого хака переопределит его. Когда новая команда SSH выполняется, она перечитывает конфигурацию SSH, и, если ее нетProxyCommand
, SSH использует наш хакProxyCommand
, позволяя применять его только к «самому внешнему» сеансу SSH. Слово предупреждения: если вы поместите хак в верхнюю часть конфигурационного файла (или выше записи, к которой вы пытаетесь подключиться по SSH), сеансы SSH, требующие a,ProxyCommand
будут игнорировать другойProxyCommand
и вместо этого попытаться разрешить адрес хоста и подключиться напрямую с Netcat.источник
vi ~/.ssh/config
открыть пустой файл. Я вставил ваши команды, но когда я пытаюсь сохранить (esc ->: -> wq), это говорит мне"~/.ssh/config" E212: Cannot open file for writing
ls -al ~/.ssh
?Это также было проблемой для меня, оказалось, что это был мой (Symantec) брандмауэр, блокирующий весь интернет-трафик от bash.
Кажется, это общая проблема со сторонними поставщиками брандмауэров, которые не распознают процесс:
https://github.com/Microsoft/BashOnWindows/issues/809
Когда я отключил брандмауэр, он работал нормально. Не могу найти лучшего решения в данный момент.
источник
В моем случае я получил эту ошибку, потому что обновление Windows вызвало проблемы с моим коммутатором Hyper-V . Оказывается, хост, к которому я пытался подключиться по ssh, был подключен к этому коммутатору - исправление восстановило ssh.
источник
Для дальнейшего использования при установке Nginx он по умолчанию будет блокировать SSH с сообщением об ошибке «Ресурс временно недоступен», если вы ...
источник