Вопрос или проблема
На Windows 10 я настроил сервер OpenSSH.
В брандмауэре я разрешил входящий порт 22 следующим образом:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\Windows\System32\OpenSSH\sshd.exe"
Когда я использую свой частный IP-адрес с портом 22 для подключения к этому серверу по ssh, все работает.
После этого я перешел в настройки маршрутизатора, чтобы настроить переадресацию портов, чтобы порт 22 публичного IP-адреса перенаправлялся на порт 22 частного IP-адреса.
Попытка подключения по ssh к порту 22 публичного IP-адреса через Putty заставляет ввести пароль, так что, похоже, переадресация портов сработала.
Однако, когда я ввожу свой пароль, появляется сообщение “Доступ запрещен”.
Для проверки я убрал переадресацию портов и снова попытался подключиться по ssh только с моим частным адресом, и это точно работает.
У меня есть подозрение, что мне нужно сделать что-то дополнительное в брандмауэре Windows, но я не уверен.
Ответ или решение
Для решения проблемы "Access Denied" при подключении к OpenSSH серверу на Windows 10 через SSH с использованием переадресации портов, можно рассмотреть несколько возможных причин и решений.
Проблемы и решения
-
Проверка учетных данных: Убедитесь, что вы используете правильные учетные данные для входа. Иногда могут возникать ошибки из-за малейшей опечатки в имени пользователя или пароле. Помните, что пароль чувствителен к регистру.
-
Настройки SSH-сервера: Проверьте файл конфигурации вашего SSH-сервера, который обычно находится по пути
C:\ProgramData\ssh\sshd_config
. Убедитесь, что в нем отсутствуют ограничения на вход для удаленных пользователей. Например, параметрыAllowUsers
могут ограничивать доступ только к определенным пользователям. -
Заблокированные IP-адреса: Проверьте, не заблокирован ли ваш внешний IP-адрес в Windows Firewall или других средствах безопасности. Нужно убедиться, что в правилах брандмауэра нет ограничений на доступ по вашему публичному IP.
-
Дополнительные правила брандмауэра: Возможно, потребуется создать дополнительные правила в Windows Firewall для разрешения входящего трафика не только на локальный IP адрес, но и на публичный. Попробуйте добавить правило с разрешением для всех IP на порт 22:
New-NetFirewallRule -Name "SSH Public Access" -DisplayName "Allow SSH from Public" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
-
Проблемы с NAT: Возможны проблемы с NAT на уровне роутера. Проверьте, что у вас правильно настроена переадресация портов с вашего публичного IP на локальный.
-
Проверка журналов: Посмотрите журналы событий Windows, а также логи SSH-сервера, они могут содержать подсказки о том, почему возникла ошибка "Access Denied". Логи SSH обычно находятся в
C:\ProgramData\ssh\logs
. -
Обновление OpenSSH: Убедитесь, что вы используете последнюю версию OpenSSH для Windows. Иногда обновления могут содержать исправления для известных проблем с безопасностью и связью.
-
Тестирование локально: Попробуйте проверить соединение с другого устройства в той же локальной сети с использованием публичного IP-адреса. Это поможет выяснить, связана ли проблема с конфигурацией сети или роутера.
Заключение
Если ни одно из предложенных решений не помогло, возможно, стоит обратиться к производителю вашего роутера или попробовать использовать другой SSH-клиент для диагностики проблемы. Убедитесь, что все настройки верны, и выполняйте тесты шаг за шагом, чтобы локализовать проблему.