Этот вопрос относится к клиенту и серверу OpenSSH (которые поставляются в комплекте с ОС Windows сравнительно недавно).

Я надеюсь получить некоторую помощь от кого-то, кто более осведомлен о SSH.

У меня есть два ноутбука, на обоих из которых установлен клиент OpenSSH (который теперь поставляется по умолчанию с Windows 10).

В одном также установлен сервер OpenSSH по умолчанию для Windows 10.

Тем не менее, у меня возникли проблемы с ssh'ing от одного только с клиентом в один с сервером.

Хотя я могу пропинговать свой "серверный" ноутбук с моего "клиентского" ноутбука », так как оба устройства находятся дома, используя мою домашнюю сеть, когда я пытаюсь подключиться по ssh к своему" серверному "ноутбуку, я получаю сообщение об ошибке:

connect to host xxxxx port 22: Connection timed out.

Так как я только начинаю использовать эти функции на этих машинах (и не установил успешных ssh-соединений ни с одним из них ранее), я не уверен, есть ли проблема у клиента или сервера. Но я сначала смотрю на "серверный" ноутбук.

Я хотел бы знать одну вещь: как узнать, какой порт прослушивает моя служба OpenSSH Server ... на тот случай, если по какой-то причине он не прослушивает порт 22. Существует правило брандмауэра для OpenSSH Server в "Панели управления" → "Система и безопасность" → "Брандмауэр Защитника Windows" → "Разрешенные приложения", но в нем не указан порт. Кроме того, мой сервис OpenSSH работает в services.msc .

Я также отметил, что у меня есть sshd_config_default , но фактический sshd_config не был создан. Файл по умолчанию был закомментирован.

Итак, я хотел спросить

  1. Где проверить, прослушивает ли моя служба OpenSSH Server соединения через порт 22.

  2. Если у кого-то есть рекомендации относительно того, какие команды настройки следует использовать в файле sshd_config на ноутбуке сервера, к которому должен быть просто подключен другой ноутбук в той же сети. Я предполагаю, что в одной из настроек должен быть указан порт 2, но я не уверен, что использование этих закомментированных команд в файле по умолчанию лучше всего использовать для моей настройки:

    #Port 22
    #AddressFamily any
    #ListenAddress 0.0.0.0
    #ListenAddress ::
    
  3. Любые другие предложения по поводу того, почему время ожидания соединения истекло.

2 ответа2

0

Вот мои ответы:

  1. Где проверить, прослушивает ли моя служба OpenSSH Server соединения через порт 22.

    Запустите эту команду в своих окнах, если ваш ssh работает на порту 22 (по умолчанию).

    netstat -an|find "LISTEN"|find ":22"

  2. Любое предложение, как настроить.

    Как вы сказали, параметр Port 22 в файле sshd_config указывает, что демон SSH порта должен открываться при запуске. Я думаю, по умолчанию, если вы не указали ни один. Поскольку это openSSH, проверьте этот сайт для получения дополнительной информации о параметрах, которые вы можете использовать.

  3. Любые другие предложения по поводу того, почему время ожидания соединения истекло.

    Если вы можете пропинговать узлы друг от друга, то наиболее частой причиной timeout является межсетевой экран между ними.

0

Хорошо, на этот раз это настоящий ответ. (И это будет длинная форма ответа Мануэля Флориана, Часть III, поскольку это была проблема с брандмауэром. - Спасибо, Мануэль!)

Как я упоминал ранее, ящики не могли пропинговать частные IP-адреса друг друга, и затем я обнаружил, что обе машины имеют один и тот же PUBLIC IP.

Чтобы помочь в этом, я сделал две вещи, которые я выполнил обе задачи на обеих машинах):

Шаг 1) Я изменил свои машины, чтобы рассматривать мою домашнюю сеть как частную.

Эти инструкции PowerShell от NiklasE rtlhm в

https://answers.microsoft.com/en-us/windows/forum/windows_10-networking/change-my-network-to-private-in-windows-10/45659a7b-89ee-42c4-910f-6ffbdd31ee0a?page= 2

было быстро и легко следовать:

  • Откройте Windows PowerShell в режиме администратора. Пуск -> PowerShell -> Щелкните правой кнопкой мыши -> открыть как администратор
  • Получить текущие профили. Убедитесь, что вы вошли в сеть, которую хотите изменить. Get-NetConnectionProfile
  • Измените сеть в своем списке на частную. Set-NetConnectionProfile -Имя "MYWIFINETWORK" -NetworkCategory Private
  • Убедитесь, что все прошло нормально Get-NetConnectionProfile

Я также изменил настройки брандмауэра, используя эти шаги из https://kb.iu.edu/d/aopy:

  1. Найдите брандмауэр Windows и щелкните, чтобы открыть его.
  2. Нажмите Расширенные настройки слева.
  3. На левой панели появившегося окна нажмите Входящие правила.
  4. На правой панели найдите правила под названием «Общий доступ к файлам и принтерам» (Echo Request - ICMPv4-In).
  5. Щелкните правой кнопкой мыши каждое правило и выберите «Включить правило».

.... с добавленным этапом изменения одного из правил, в котором есть Профиль как общего, так и частного, для применения только к частным профилям, так как я не хочу, чтобы кто-либо в реальной общедоступной сети связывался со мной по ssh.

Щелкните правой кнопкой мыши правило, выберите Свойства, вкладка «Дополнительно», в разделе «Профили» снимите флажок «Общедоступный».

После внесения этих изменений я проверил, что я могу пропинговать сервер с клиента, я могу подключиться по ssh с моего "клиента" на мое "серверное" устройство ssh.

[ПОБОЧНОЕ ПРИМЕЧАНИЕ о безопасности: конечно, если кто-то читает это и хочет попробовать, делайте это на свой страх и риск, поскольку называть сеть "Частной" означает «Я доверяю другим устройствам в этой сети - и что никто не имеет взломал мою сеть ". Но если вы выполняете только шаг 2 (не ограничивая правило частными сетями), это означает, что когда вы находитесь в общедоступной сети, другие устройства могут пропинговать вас. Я подумываю об отмене этих изменений, когда они мне не нужны, может также отключить SSH на обеих машинах, хотя это и не нужно.]

Мне придется подождать, пока мой профиль не сможет объединиться с user987957, чтобы пометить что-либо как ответ. Однако, спасибо вам всем за подсказки, которые помогут мне исследовать эту проблему!

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