Secure Shell
Отладка проблем ssh
Поиск…
Закрытый ключ не принимается (отладка клиентов 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-соединение сразу после его принятия. Клиент и сервер еще не обменялись никакими данными. Сервер еще не отправил клиенту ключ хоста, и клиент еще не попытался выполнить аутентификацию с сервером.