Вопрос или проблема
Итак, у меня есть ноутбук с Pop! OS (20.04 LTS), я только что установил openssh-server с помощью sudo apt-get install openssh-server
, и я пытаюсь подключиться к нему по SSH с моего настольного ПК с Windows 10, но получаю следующую ошибку:
PS C:\Users\enricojr\.ssh> ssh -vvv 192.168.254.203
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Чтение конфигурационных данных C:\\Users\\enricojr/.ssh/config
debug3: Не удалось открыть файл:C:/ProgramData/ssh/ssh_config ошибка:2
debug2: resolve_canonicalize: hostname 192.168.254.203 - это адрес
debug2: ssh_connect_direct
debug1: Подключение к 192.168.254.203 [192.168.254.203] порт 22.
debug1: Соединение установлено.
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_rsa тип 0
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_rsa-cert ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_rsa-cert.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_rsa-cert тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_dsa ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_dsa.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_dsa тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_dsa-cert ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_dsa-cert.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_dsa-cert тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ecdsa ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ecdsa.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_ecdsa тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ecdsa-cert ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ecdsa-cert.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_ecdsa-cert тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ed25519 ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ed25519.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_ed25519 тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ed25519-cert ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_ed25519-cert.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_ed25519-cert тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_xmss ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_xmss.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_xmss тип -1
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_xmss-cert ошибка:2
debug3: Не удалось открыть файл:C:/Users/enricojr/.ssh/id_xmss-cert.pub ошибка:2
debug1: файл идентификации C:\\Users\\enricojr/.ssh/id_xmss-cert тип -1
debug1: Строка локальной версии SSH-2.0-OpenSSH_for_Windows_8.1
debug3: recv - от CB(2) ОШИБКА:138, io:000001B6A4A39080
kex_exchange_identification: чтение: время соединения истекло
Ping в порядке, tracert тоже в порядке (если не указано иное, все команды выполняются из Windows Powershell)
PS C:\Users\enricojr\.ssh> tracert 192.168.254.203
Tracing route to 192.168.254.203 over a maximum of 30 hops
1 2 ms 1 ms 2 ms 192.168.254.203
Trace complete.
PS C:\Users\enricojr\.ssh> ping 192.168.254.203
Pinging 192.168.254.203 with 32 bytes of data:
Reply from 192.168.254.203: bytes=32 time=2ms TTL=64
Reply from 192.168.254.203: bytes=32 time=2ms TTL=64
Reply from 192.168.254.203: bytes=32 time=2ms TTL=64
Reply from 192.168.254.203: bytes=32 time=2ms TTL=64
Ping statistics for 192.168.254.203:
Пакеты: Отправлено = 4, Получено = 4, Потеряно = 0 (0% потерь),
Приблизительное время кругового пути в миллисекундах:
Минимум = 2ms, Максимум = 2ms, Среднее = 2ms
Запуск ssh localhost
непосредственно на удаленном устройстве (ноутбук у меня перед глазами) запрашивает пароль, а затем “подключается” нормально.
Я смог scp
публичный ключ, который хотел использовать, с рабочего стола на удаленный компьютер без проблем.
Кроме того, я могу SSH с рабочего стола на совершенно другой удаленный компьютер, мой Macbook Pro.
Я почти уверен, что проблема связана с установкой openssh-server на pop os, но это практически стандартная установка, я не выполнял дополнительных команд кроме sudo systemctl stop/restart/status
после установки, и я полагал, что это должно работать сразу же.
Есть ли идеи, что может быть не так?
edit1:
результаты ssh-keyscan на рабочем столе -> удаленный
PS C:\Users\enricojr\.ssh> ssh-keyscan 192.168.254.203
чтение (192.168.254.203): время соединения истекло
чтение (192.168.254.203): время соединения истекло
чтение (192.168.254.203): время соединения истекло
Я не знаю, совпадение это или нет –
Когда я впервые настраивал эту машину, я установил статический IP-адрес вне диапазона DHCP моего маршрутизатора, но забыл правильно установить маску сети.
Изменение ее с 0.0.0.0 на 255.255.255.0 и перезагрузка, похоже, исправило проблему, но я не вижу, какое отношение маска сети имеет ко всему этому, так что это может быть просто совпадением.
Ответ или решение
Когда вы сталкиваетесь с ошибкой kex_exchange_identification: read: Connection timed out
при попытке подключиться к SSH на ноутбуке, работающем под управлением Pop! OS, и подключение происходит с настольного ПК под управлением Windows 10, это может быть вызвано несколькими факторами. Ваше описание проблемы уже включает множество диагностических шагов, которые подтвердили, что связь между устройствами установлена (пинг и трассировка проходят без проблем). Таким образом, стоит обратить внимание на конфигурацию SSH-сервера и сетевые настройки.
1. Проверьте статус SSH-сервера
Первым шагом, который стоит предпринять, является проверка статуса SSH-сервера на ноутбуке:
sudo systemctl status ssh
Убедитесь, что служба работает и в журнале нет ошибок. Если служба не запущена, вы можете ее запустить командой:
sudo systemctl start ssh
2. Настройка брандмауэра
Вторым важным шагом является проверка настроек брандмауэра на ноутбуке. В большинстве случаев, если использование SSH-сервера добавляет дополнительные слои защиты, это может блокировать входящие подключения. Для временной проверки отключите UFW (Uncomplicated Firewall), если он включен:
sudo ufw status
Если он включен, вы можете временно его отключить:
sudo ufw disable
После этого снова попробуйте подключиться с вашего настольного ПК.
3. Проверьте конфигурацию SSH
Файл конфигурации SSH-сервера (/etc/ssh/sshd_config
) также может содержать настройки, которые могут ограничивать доступ. Откройте файл для редактирования:
sudo nano /etc/ssh/sshd_config
Проверьте следующие параметры:
- Убедитесь, что
Port 22
не измененн на другой порт:
Port 22
- Убедитесь, что нет ограничений по IP, таких как
AllowUsers
илиDenyUsers
.
Если вы внесли изменения в файл, не забудьте перезапустить SSH-сервер командой:
sudo systemctl restart ssh
4. Проверка сетевых настроек
Ваша заметка о проблеме с настройкой статического IP адреса приводит к важному выводу о необходимости правильной настройки сетевого интерфейса. Неправильная маска подсети может блокировать доступ к другим устройствам в локальной сети.
Убедитесь, что маска подсети установлена правильно (обычно 255.255.255.0
для малых домашних сетей). Это может быть сделано в интерфейсе сетевых настроек вашего дистрибутива.
5. Проверьте журнал системы
Если все вышеперечисленное не решает проблему, стоит проверить журнал системы для выявления более подробной информации о происходящем. Это можно сделать с помощью команды:
journalctl -xe
Заключение
Ошибка kex_exchange_identification: read: Connection timed out
может быть вызвана множеством факторов. Проанализировав настройки SSH-сервера, состояние службы, брандмауэр и конфигурацию сети, вы сможете выявить источник проблемы. Не забывайте, что некоторые изменения могут требовать перезапуска SSH-сервера или даже перезагрузки системы. Если вы провели все проверки, и проблема сохраняется, возможно, вам поможет получение дополнительной информации в сообществе, работающем с подобным программным обеспечением.