SSH-соединение с сервером Ubuntu не удается, возникает ошибка “400 Bad Request”, несмотря на наличие действующих ключевых файлов.

Вопрос или проблема

У меня проблема на моем сервере 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. Давайте рассмотрим возможные причины и решения этой проблемы.

Возможные Причины Ошибки

  1. Неправильный Адрес Сервера: Убедитесь, что вы подключаетесь к правильному IP-адресу или доменному имени. Ошибки в адресе могут привести к неправильному обработчику запросов, например, если вы пытаетесь подключиться к веб-серверу вместо SSH-сервера.

  2. Проблемы с SSH-сервером: Убедитесь, что SSH-сервер запущен и правильно настроен на удаленной машине. Вы можете это проверить, выполнив команду на удаленном сервере:

    sudo systemctl status ssh
  3. Конфликт Портов: Возможно, порт 22 используется другим сервисом, таким как веб-сервер (например, Apache, как указано в вашем логе). Убедитесь, что SSH-сервер слушает на порту 22:

    sudo netstat -tuln | grep :22
  4. Ошибка в Конфигурации Apache: Раз в логе упоминается Apache, есть вероятность, что он перехватывает ваши SSH-запросы. Убедитесь, что SSH-сервер и веб-сервер не конфликтуют по портам.

  5. Недоступность SSH: Если вы работаете с облачным сервером или виртуальной машиной, проверьте настройки брандмауэра и группы безопасности. Возможны ограничения на входящие соединения на порт 22.

  6. Ключи SSH: Хотя вы упомянули, что видите файл id_rsa, убедитесь, что он соответствует ключу, добавленному в файл ~/.ssh/authorized_keys на удаленной стороне.

Рекомендации по Решению Проблемы

  1. Проверьте IP-адрес и порт:
    Убедитесь, что вы используете правильный адрес и порт для SSH-подключения:

    ssh -p 22 [email protected]  
  2. Проверьте конфигурацию SSH:
    Проверьте файл конфигурации SSH на удаленном сервере (/etc/ssh/sshd_config) на предмет ошибок и убедитесь, что строка Port 22 присутствует.

  3. Перезапустите SSH-сервер:
    Если вы внесли изменения в конфигурацию SSH, не забудьте перезапустить сервер:

    sudo systemctl restart ssh
  4. Проверьте доступность порта 22:
    Используйте утилиты вроде telnet или nc, чтобы проверить доступность порта 22:

    nc -zv federicolivieri.noip.me 22
  5. Посмотрите Логи SSH:
    Проверьте системные логи на удаленном сервере (/var/log/auth.log или /var/log/secure), чтобы увидеть, есть ли ошибки при попытке подключения.

  6. Обратите внимание на права доступа:
    Убедитесь, что файл id_rsa имеет правильные права доступа. Он должен быть доступен только для чтения для владельца:

    chmod 600 /home/federico/.ssh/id_rsa

Заключение

Ошибки подключения по SSH могут быть вызваны множеством факторов. Следует внимательно проверить настройки сети, конфигурации серверов и логи для выявления проблемы. Следуя вышеуказанным рекомендациям, вы сможете найти и устранить причину возникновения ошибки "400 Bad Request". Если проблема сохраняется, возможно, стоит рассмотреть возможность консультации с вашим системным администратором или командой технической поддержки.

Оцените материал
Добавить комментарий

Капча загружается...