Насколько я могу судить, это ошибка в WSL. Надеюсь, Microsoft исправит это в следующей сборке. Но сейчас мы можем использовать этот немного уродливый хак.
Обновление № 1 : определенно ошибка. Нашел эту проблему на Github. Тир предложил обходной путь перезапуска оболочки, работает и для меня, если вы не хотите проходить через все это.
TL; DR Добавьте это в КОНЕЦ вашей конфигурации SSH (обычно находится в ~/.ssh/config
):
Host *
ProxyCommand nc %h %p %r
Вот почему это работает: Наш 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.