Вопрос или проблема
Я не могу настроить входящие SSH-соединения после обновления с Windows 10 до 11.
Фон:
-
Я использовал Windows 10 на ПК и настроил OpenSSH и ключи, чтобы получить удаленный доступ к нему. Это работало нормально в течение многих лет. Материнская плата была несовместима с Windows 11, поэтому я никогда не обновлялся.
-
Недавно я собрал новый ПК с почти всем новым оборудованием (новая материнская плата, накопители и т.д.). Клонировал существующий диск на один из новых жестких дисков. Все работало нормально. Новое оборудование совместимо с Windows 11, поэтому я обновился. После нескольких настроек и переустановок почти все работает нормально. Но входящие SSH-соединения не работают, и я не могу понять, в чем дело.
Вещи, которые могут быть полезны:
- Доступ в Интернет работает нормально, ethernet имеет статический IP.
- Не удается пинговать локальный IP-адрес изнутри сети.
- Пробовал изменить статический IP на что-то, чем никогда не пользовался раньше, все равно не пингует.
- Исходящие SSH-соединения работают нормально.
- Входящие не работают.
- Исходящий RDP работает нормально.
- Входящие не работают.
- Исходящий доступ к сетевым папкам работает нормально.
- Входящие не работают.
Вещи, которых я хочу избежать:
- Полная переустановка Windows 11. У меня много настроек, которые было бы кошмаром восстановить.
Возможно ли сделать полный сброс сетевых адаптеров без сброса всего?
Вещи, которые я пробовал:
- Удаление/переустановка клиент и сервера OpenSSH в дополнительных компонентах.
- Убедившись, что порт 22 открыт в брандмауэре.
- Перепроверка разрешений на administrators_authorized_keys.
- Временное отключение антивируса.
Я ожидаю, что SSH-соединения с ПК и на ПК будут работать корректно. Но только исходящие соединения работают. Входящие заблокированы, и попытка пинговать IP не удалась.
Содержимое sshd_config
:
# Это файл конфигурации sshd сервера для всей системы. См.
# sshd_config(5) для получения дополнительной информации.
# Стратегия, используемая для параметров в конфигурации по умолчанию sshd_config, поставляемой с
# OpenSSH, заключается в том, чтобы указывать параметры с их значением по умолчанию, где
# это возможно, но оставлять их закомментированными. Раскомментированные параметры переопределяют
# значение по умолчанию.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# Шифры и ключи
#RekeyLimit default none
# Логирование
#SyslogFacility AUTH
#LogLevel INFO
# Аутентификация:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PubkeyAuthentication yes
# По умолчанию проверяются как .ssh/authorized_keys, так и .ssh/authorized_keys2,
# но это переопределено, так что установки будут проверять только .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
# Для этого вам также понадобятся ключи хоста в %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Измените на yes, если вы не доверяете ~/.ssh/known_hosts для
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Не читайте файлы пользователя ~/.rhosts и ~/.shosts
#IgnoreRhosts yes
# Чтобы отключить туннелирование паролей в открытом текстовом виде, измените здесь на no!
PasswordAuthentication no
#PermitEmptyPasswords no
# Параметры GSSAPI
#GSSAPIAuthentication no
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# нет пути для стандартного баннера
#Banner none
# переопределить стандартное отсутствие подсистем
Subsystem sftp sftp-server.exe
# Пример переопределения параметров для каждого пользователя
#Match User anoncvs
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Результаты netstat -an | sls ':22'
:
PowerShell 7.4.1
PS C:\Users\xxxx> netstat -an | sls ':22'
TCP 0.0.0.0:22 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2266 127.0.0.1:6850 ESTABLISHED
TCP 127.0.0.1:2267 127.0.0.1:2268 ESTABLISHED
TCP 127.0.0.1:2268 127.0.0.1:2267 ESTABLISHED
TCP 127.0.0.1:6850 127.0.0.1:2266 ESTABLISHED
TCP 127.0.0.1:22112 0.0.0.0:0 LISTENING
TCP 192.168.0.24:2258 104.17.107.108:443 ESTABLISHED
TCP [::]:22 [::]:0 LISTENING
Я дурак. Моя сеть была переключена с частной на общественную. В общественной сети было переопределение, которое блокировало все входящие соединения, даже когда они были разрешены в брандмауэре и в других местах. Я переключил обратно, и соединения SSH (и RDP, и файловые ресурсы) теперь работают.
Спасибо всем комментаторам; их шаги по устранению неполадок и сбор запрашиваемой информации помогли мне это найти.
Для меня сеть была классифицирована как “домен”. Но правило брандмауэра, которое Windows устанавливает по умолчанию для сервера OpenSSH, предназначено только для “частных” сетей.
Я изменил правило брандмауэра в “Брандмауэре Windows Defender” -> “Дополнительные параметры” -> “Правила входящего трафика” -> “OpenSSH SSH Server (sshd)” -> “Свойства” -> “Дополнительно” -> “Профили”. Это решило проблему для меня.
Я был уверен, что это проблема брандмауэра, потому что машина могла подключаться к себе по SSH, но SSH-соединения с других машин не работали.
Ответ или решение
После обновления с Windows 10 на Windows 11 многие пользователи сталкиваются с проблемами при установлении входящих соединений, такими как SSH. Рассмотрим основные причины, по которым такие проблемы могут возникать, и возможные пути их решения.
Проблема с подключением SSH после обновления
-
Смена типа сети:
Ваша проблема, вероятно, была связана с тем, что ваш компьютер перешел на использование сети с типом "Общедоступная" (Public), что по умолчанию блокирует входящие соединения. Это частая проблема после обновления операционной системы или при смене оборудования. Рекомендуемое решение – вернуть сеть в режим "Приватная" (Private), что позволяет более гибко управлять правилами брандмауэра, касающимися входящих соединений. -
Настройки брандмауэра:
Если ваш компьютер был подключен к сети, назначенной как "Домен", убедитесь, что брандмауэр позволяет входящие соединения для OpenSSH. Это можно сделать через "Дополнительные параметры" брандмауэра Windows:- Откройте "Windows Defender Firewall".
- Перейдите в "Дополнительные настройки".
- Найдите правило "OpenSSH SSH Server (sshd)" в разделе "Входящие правила".
- Измените параметры профиля на "Приватная" или "Все".
-
Настройки подключения и конфигурация SSH-сервера:
Проверьте ваш файл конфигурации SSH (sshd_config
). По умолчанию должно быть разрешено прослушивание на всех интерфейсах. Убедитесь, что строкиListenAddress 0.0.0.0
иListenAddress ::
не закомментированы. Ваш текущий файл конфигурации, похоже, настроен правильно, но стоит проверить и убедиться в этом. -
Проблемы с сетевой инфраструктурой:
Если вы не можете пинговать локальный IP-адрес, возможно, стоит проверить маршрутизатор и остальные параметры локальной сети. Возможно, на новом оборудовании есть особенности настройки, которые блокируют видимость вашего ПК для других устройств в сети. -
Проверка логов SSH:
Логи SSH могут дать дополнительные подсказки о проблемах. Обычно они находятся в папке%programdata%\ssh\logs
. Просмотрите последние записи и проверьте на наличие сообщений об ошибках или предупреждений.
Полезные команды для диагностики
-
Проверьте, слушает ли SSH-сервер:
netstat -an | Select-String ':22'
-
Проверка статуса службы SSH:
Get-Service -Name sshd
-
Проверка правил брандмауэра:
Get-NetFirewallRule -DisplayName 'OpenSSH SSH Server (sshd)'
Вывод
Если вы столкнулись с проблемами входящих соединений по SSH после обновления до Windows 11, начните с диагностики типа сети, брандмауэра и конфигурации SSH-сервера. Обновления устройств и изменения в конфигурации могут привести к тому, что настройки, которые работали ранее, могут перестать действовать. Всегда стоит внимательно изучать изменения и корректировать настройки, чтобы обеспечить нормальную работу удалённого доступа.
Следуйте этим рекомендациям, и вы сможете решить возникшие проблемы без необходимости полного переустановления Windows.