Вопрос или проблема
У меня проблема на моем сервере Ubuntu. Когда я пытаюсь подключиться по ssh с этого сервера на второй сервер, я получаю эту ошибку:
federico@federico:~/.ssh$ ssh [email protected] -vvv
OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips 1 Mar 2016
debug1: Чтение конфигурационных данных /home/federico/.ssh/config
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение опций для *
debug2: разрешение "federicolivieri.noip.me" порт 22
debug2: ssh_connect_direct: needpriv 0
debug1: Подключение к federicolivieri.noip.me [95.144.54.179] порт 22.
debug1: Соединение установлено.
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_rsa type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_rsa-cert type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_dsa type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_dsa-cert type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_ecdsa type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_ed25519 type -1
debug1: key_load_public: Нет такого файла или каталога
debug1: identity file /home/federico/.ssh/id_ed25519-cert type -1
debug1: Включение совместимого режима для протокола 2.0
debug1: Локальная строка версии SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu1
debug1: ssh_exchange_identification: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
debug1: ssh_exchange_identification: <html><head>
debug1: ssh_exchange_identification: <title>400 Bad Request</title>
debug1: ssh_exchange_identification: </head><body>
debug1: ssh_exchange_identification: <h1>Bad Request</h1>
debug1: ssh_exchange_identification: <p>Ваш браузер отправил запрос, который этот сервер не смог понять.<br />
debug1: ssh_exchange_identification: </p>
debug1: ssh_exchange_identification: <hr>
debug1: ssh_exchange_identification: <address>Apache/2.4.10 (Raspbian) Сервер на 127.0.1.1 Порт 80</address>
debug1: ssh_exchange_identification: </body></html>
ssh_exchange_identification: Подключение закрыто удаленным хостом
Тем не менее, я вижу id_rsa в /home/federico/.ssh/
federico@federico:~/.ssh$ ls -l
total 76
-rw-r--r-- 1 federico federico 1265 Jun 29 14:10 config
-rw-r--r-- 1 federico federico 3261 Jun 22 09:59 id_rsa
-rw-r--r-- 1 federico federico 727 Jun 22 09:59 id_rsa.pub
-rw-r--r-- 1 federico federico 11906 Jul 19 09:28 known_hosts.bak
-rw-r--r-- 1 federico federico 9682 Jun 30 09:04 known_hosts.old
Я исследовал эту ошибку, но все предлагают что-то разное, и эти решения не сработали для меня. Есть идеи?
Спасибо
Ответ или решение
Проблема, с которой вы столкнулись при попытке установить SSH-соединение с сервером, действительно может быть несколько запутанной. Ошибка "400 Bad Request", которую вы получили, часто указывает на неправильное направление запроса, но в вашем случае она возникает при подключении по SSH. Давайте рассмотрим возможные причины и решения этой проблемы.
Возможные Причины Ошибки
-
Неправильный Адрес Сервера: Убедитесь, что вы подключаетесь к правильному IP-адресу или доменному имени. Ошибки в адресе могут привести к неправильному обработчику запросов, например, если вы пытаетесь подключиться к веб-серверу вместо SSH-сервера.
-
Проблемы с SSH-сервером: Убедитесь, что SSH-сервер запущен и правильно настроен на удаленной машине. Вы можете это проверить, выполнив команду на удаленном сервере:
sudo systemctl status ssh
-
Конфликт Портов: Возможно, порт 22 используется другим сервисом, таким как веб-сервер (например, Apache, как указано в вашем логе). Убедитесь, что SSH-сервер слушает на порту 22:
sudo netstat -tuln | grep :22
-
Ошибка в Конфигурации Apache: Раз в логе упоминается Apache, есть вероятность, что он перехватывает ваши SSH-запросы. Убедитесь, что SSH-сервер и веб-сервер не конфликтуют по портам.
-
Недоступность SSH: Если вы работаете с облачным сервером или виртуальной машиной, проверьте настройки брандмауэра и группы безопасности. Возможны ограничения на входящие соединения на порт 22.
-
Ключи SSH: Хотя вы упомянули, что видите файл
id_rsa
, убедитесь, что он соответствует ключу, добавленному в файл~/.ssh/authorized_keys
на удаленной стороне.
Рекомендации по Решению Проблемы
-
Проверьте IP-адрес и порт:
Убедитесь, что вы используете правильный адрес и порт для SSH-подключения:ssh -p 22 [email protected]
-
Проверьте конфигурацию SSH:
Проверьте файл конфигурации SSH на удаленном сервере (/etc/ssh/sshd_config
) на предмет ошибок и убедитесь, что строкаPort 22
присутствует. -
Перезапустите SSH-сервер:
Если вы внесли изменения в конфигурацию SSH, не забудьте перезапустить сервер:sudo systemctl restart ssh
-
Проверьте доступность порта 22:
Используйте утилиты вродеtelnet
илиnc
, чтобы проверить доступность порта 22:nc -zv federicolivieri.noip.me 22
-
Посмотрите Логи SSH:
Проверьте системные логи на удаленном сервере (/var/log/auth.log
или/var/log/secure
), чтобы увидеть, есть ли ошибки при попытке подключения. -
Обратите внимание на права доступа:
Убедитесь, что файлid_rsa
имеет правильные права доступа. Он должен быть доступен только для чтения для владельца:chmod 600 /home/federico/.ssh/id_rsa
Заключение
Ошибки подключения по SSH могут быть вызваны множеством факторов. Следует внимательно проверить настройки сети, конфигурации серверов и логи для выявления проблемы. Следуя вышеуказанным рекомендациям, вы сможете найти и устранить причину возникновения ошибки "400 Bad Request". Если проблема сохраняется, возможно, стоит рассмотреть возможность консультации с вашим системным администратором или командой технической поддержки.