Поиск…


Закрытый ключ не принимается (отладка клиентов OpenSSH)

По умолчанию большая часть информации скрыта от пользователя. Вы можете использовать -v переключатели, чтобы получить подробный журнал попытки подключения, который обычно выявляет проблему, показывая, почему поведение отличается от того, что вы ожидаете.

Предположим, вы подключаетесь к серверу example.com используя ssh (или другой клиент OpenSSH, например sftp или scp ), и ваш закрытый ключ не принимается сервером, и сервер запрашивает пароль (или отклоняет соединение):

$ ssh example.com
[email protected]'s password: 

Попробуйте запустить ssh с -vvv переключателей -vvv , которые будут выписывать все отладочные сообщения. Это будет много информации, но через некоторое время довольно легко понять, что:

$ ssh -vvv example.com

Наиболее распространенная проблема заключается в том, что ключ не находится в ожидаемом месте. Вы можете ожидать появления похожих строк, жалуясь на недостающие файлы. Проверка того, что ваш файл действительно прочитан, - хороший старт:

debug1: identity file /home/username/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/username/.ssh/id_dsa-cert type -1

Мы можем продолжить проверку подлинности. Ключ может быть предложен, но отклонен сервером из-за проблемы с конфигурацией сервера. Журнал может выглядеть примерно так:

debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: username@localhost
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password

ИЗМЕНЕНА ИДЕНТИФИКАЦИЯ REMOTE HOST!

Общая ошибка с использованием ssh заключается в том, чтобы увидеть ошибку, например

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:L5ri/Xdgpuals893ej1z5F1wlg1n2YNeBf/tsABX+QQ.
Please contact your system administrator.
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/username/.ssh/known_hosts:12
RSA host key for *IP address* has changed and you have requested strict checking.
Host key verification failed.

Это означает, что вы подключились к одному и тому же серверу раньше и были идентифицированы с использованием разных ключей хоста. Если вы знаете, что вы изменили ключи сервера, переустановить сервер или администратор сервера объявил о некоторых изменениях, обычно нормально удалить старый ключ и позволить ssh хранить его новое.

Старый ключ можно прозрачно удалить с помощью ssh-keygen :

ssh-keygen -R *IP address*

И следующее соединение должно попросить вас подтвердить новый отпечаток:

ssh192.168.0.128
The authenticity of host '192.168.0.128 (192.168.0.128)' can't be established.
ECDSA key fingerprint is SHA256:L5ri/Xdgpuals893ej1z5F1wlg1n2YNeBf/tsABX+QQ.
Are you sure you want to continue connecting (yes/no)? 

Если вы не знаете об этом выше, лучше всего связаться с администратором вашего сервера, чтобы убедиться, что все в порядке. Если нет, потенциальный злоумышленник сможет получить как вашу информацию аутентификации, так и все переданные данные!

В соединении отказано

Ошибка «Connection Refused» возникнет, если ваш клиент отправит запрос на подключение к удаленному серверу, а удаленный хост отвечает, заявив, что он отказывается принять запрос. Ошибка «Connection Refused» означает, что компьютер не принимает соединения с запрошенным IP-адресом и портом.

«Отклонение соединения» может быть вызвано брандмауэром, который блокирует запросы на соединение. Брандмауэр, который настроен для блокировки подключений к конкретной конечной точке, может быть настроен на удаление запросов на соединение - в этом случае клиент никогда не получит ответ и, в конечном итоге, отключится. Или брандмауэр может отвечать на запросы соединения соединения с ответом об отказе.

Помимо брандмауэров, в случае SSH «отказ в соединении» имеет несколько возможных причин:

  • Вы можете использовать неправильный номер порта для подключения. Стандартный номер порта для SSH равен 22, но некоторые люди запускают службу ssh на другом порту для предотвращения попыток несанкционированного доступа.

  • Возможно, вы пытаетесь подключиться к неправильному компьютеру. Возможно, вы ошибочно указали имя хоста или IP-адрес. Или компьютер может использовать динамически назначенный адрес, который изменился.

  • Возможно, процесс ssh-сервера не запущен:

    • Возможно, он еще не запущен, если система находится в процессе запуска.
    • Возможно, он был отключен; например, когда система находится в однопользовательском режиме.
    • Возможно, это было неправильно сконфигурировано, в результате чего он не запускался.
    • На компьютере не может быть установлен SSH-сервер. Системы MS Windows обычно не включают SSH-сервер. В некоторых системах Linux SSH-сервер может быть необязательным компонентом. OS X включает SSH-сервер, но по умолчанию он отключен.
  • Серверный процесс SSH может не прослушивать подключения к определенному IP-интерфейсу, к которому вы пытаетесь подключиться. На большинстве компьютеров есть как минимум два IP-интерфейса, «локальный» интерфейс и один или несколько сетевых интерфейсов. Каждый активный интерфейс будет иметь связанный с ним IP-адрес. Сервер SSH обычно настроен для приема соединений на любом IP-интерфейсе. Но он может быть настроен на прием соединений только на определенных интерфейсах. В этом случае компьютер откажется от подключения к IP-адресу, который не прослушивает сервер SSH, даже если запрос на подключение имеет правильный порт.

  • Сервер может иметь отставание запросов на подключение к одному и тому же порту. Это редко и необычно, но если хост получает запросы на соединение быстрее, чем они могут быть обработаны, хост в конечном итоге начнет отклонять новые запросы на соединение.

Следует отметить, что брандмауэры в сторону, «отказ в соединении» означает , что вы общаетесь с удаленным компьютером - это просто не принимает ваш запрос на подключение.

Время соединения истекло

Ошибка «Тайм-аут соединения» возникает, когда удаленная система не отвечает на попытку клиента открыть TCP / IP-соединение. Наиболее распространенными причинами являются:

  • Брандмауэр блокирует попытку подключения на используемом вами порту:
    • Брандмауэр может находиться на стороне клиента, блокируя исходящие соединения на стороне сервера, блокируя входящие соединения или где-то еще на пути.
    • Коренной проблемой может быть то, что вы используете неправильный номер порта.
  • Хост, к которому вы пытаетесь подключиться, может находиться в автономном режиме.
  • Некоторая часть сети между клиентом и сервером может быть отключена или повреждена.
  • Может возникнуть проблема сетевой маршрутизации.

Диагностика основной причины таймаутов подключения затруднительна.

ssh_exchange_identification: read: Сброс соединения с помощью одноранговой сети

Это сообщение об ошибке может быть получено клиентом OpenSSH ssh . Это означает, что TCP-соединение между клиентом и сервером было анонимно закрыто сервером сразу после его принятия. Общие причины этого сообщения:

  • Серверный процесс SSH работает неправильно - например, он разбился.
  • Брандмауэр, маршрутизатор или другое сетевое устройство между клиентом и сервером вмешиваются в соединение SSH.

Фразы в сообщении об ошибке указывают конкретно, что произошло:

ssh_exchange_identification: 1. После того, как клиент SSH подключился к SSH-серверу, первым шагом при запуске протокола SSH является отправка сервером своей версии программного обеспечения клиенту. Ошибка, содержащая «ssh_exchange_identification», указывает на то, что ошибка возникла сразу после подключения TCP, а клиент ожидал версию программного обеспечения с сервера.

Сброс соединения: сброс соединения означает, что соединение TCP было «аномально закрыто». Вы можете получить это, если произойдет сбой программного процесса, связанного с одним из TCP-соединений. Сетевые брандмауэры могут быть настроены на использование сбросов соединений в качестве средства блокировки TCP-соединений.

by peer означает, что соединение TCP было закрыто с «другого конца» соединения. В этом случае «другой конец» - это удаленный SSH-сервер.

Обратите внимание, что эта ошибка не указывает на какой-либо отказ аутентификации. Сервер закрыл TCP-соединение сразу после его принятия. Клиент и сервер еще не обменялись никакими данными. Сервер еще не отправил клиенту ключ хоста, и клиент еще не попытался выполнить аутентификацию с сервером.

ssh_exchange_identification: соединение закрыто удаленным хостом

Это сообщение об ошибке может быть получено клиентом OpenSSH ssh. Это означает, что TCP-соединение между клиентом и сервером было закрыто сервером сразу после его принятия. Это сообщение обычно указывает, что SSH-сервер настроен не принимать соединения от клиента по какой-либо причине:

  • Сервер может быть настроен на отказ от соединений с IP-адреса клиента.
  • Сервер может быть настроен с ограничением количества активных соединений SSH.
  • Возможно, клиент подключился к тому, что не является сервером SSH.

Фразы в сообщении об ошибке указывают конкретно, что произошло:

ssh_exchange_identification: 1. После того, как клиент SSH подключился к SSH-серверу, первым шагом при запуске протокола SSH является отправка сервером своей версии программного обеспечения клиенту. Ошибка, содержащая «ssh_exchange_identification», указывает на то, что ошибка произошла сразу после подключения TCP, а клиент ожидал версию программного обеспечения с сервера.

Соединение закрыто: это означает, что соединение TCP было закрыто обычным способом. Это означает, что сервер SSH намеренно закрыл соединение. Это в отличие от «Сброс соединения», который может указывать на то, что сервер SSH разбился или был неисправен.

удаленным хостом означает, что соединение TCP было закрыто с «другого конца» соединения. В этом случае «другой конец» - это удаленный SSH-сервер.

Обратите внимание, что эта ошибка не указывает на какой-либо отказ аутентификации. Сервер закрыл TCP-соединение сразу после его принятия. Клиент и сервер еще не обменялись никакими данными. Сервер еще не отправил клиенту ключ хоста, и клиент еще не попытался выполнить аутентификацию с сервером.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow