Наскільки я можу сказати, це помилка в 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 використовувати проксі-сервер без хостів. Таким чином, це відбувається навколо невдалого розподілу ресурсів TCH через 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.