(ранее отправленный в stackoverflow ошибкой)
Я выполняю набор серверов с Ubuntu 14.04.1 (солнце, гиперион...), все из которых используют открытые ключи (OpenSSH_6.6.1, OpenSSL 1.0.1f 6 января 2014 на всех машинах) для rsync без проблем. Почти все...
Одна связь прерывается без любых изменений в конфигурациях или ключах. Затем я попытаюсь повторно добавить ключи, проверить на ECDSA, перезагрузка/перезапуск ssh, и это работает снова. Или это не делает. В этом случае я просто ожидаю случайное количество времени (1 ч до 3 месяцев) того же. На этот раз это решает проблему - некоторое время.
Соответствующие части ssh-vvv разность:
Успешное соединение
debug1: Host 'hyperion.internal' is known and matches the ECDSA host key.
debug1: Found key in /home/bar/.ssh/known_hosts:20
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/bar/.ssh/id_rsa (0x7f..),
debug2: key: /home/bar/.ssh/id_dsa ((nil)),
debug2: key: /home/bar/.ssh/id_ecdsa ((nil)),
debug2: key: /home/bar/.ssh/id_ed25519 ((nil)),
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,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: /home/bar/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 95:...
debug3: sign_and_send_pubkey: RSA 95:...
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to hyperion.internal ([172.16.0.10]:22).
Неудавшееся соединение
debug1: Host 'hyperion.internal' is known and matches the ECDSA host key.
debug1: Found key in /home/bar/.ssh/known_hosts:20
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/bar/.ssh/id_rsa (0x7f..),
debug2: key: /home/bar/.ssh/id_dsa ((nil)),
debug2: key: /home/bar/.ssh/id_ecdsa ((nil)),
debug2: key: /home/bar/.ssh/id_ed25519 ((nil)),
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,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: /home/bar/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/bar/.ssh/id_dsa
debug3: no such identity: /home/bar/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/bar/.ssh/id_ecdsa
debug3: no such identity: /home/bar/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/bar/.ssh/id_ed25519
debug3: no such identity: /home/bar/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
Вещи, которые я несколько раз проверял:
ssh-copy-id -i /home/bar/.ssh/id_rsa europa@hyperion.internal
копирует правильные ключи направо authorized_hosts файлЧто действительно не помогло, но добавило к vodoo/heisenbug эффекту:
Я вставил полные журналы с некоторой отредактированной информацией в pastebin: стена журнала
Проблема решена, она вообще не была связана с ssh:
hyperion.internal имел зашифрованный домашний адрес, поэтому поиск ключа не удался, когда он не был смонтирован в / home / europe
.
В ретроспективе это довольно очевидно, но это объясняет эффект heisenbug, заключающийся в отсутствии сбоев при просмотре журналов на машине (при входе в систему, конечно ...)
Надеюсь, это поможет хоть кому-то еще.
Похоже, проблема с сервером:
debug1: Offering RSA public key: /home/bar/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
сервер, похоже, не отправляет здесь ответ. Я бы попробовал запустить отладку до 11 на стороне сервера и посмотреть, о чем он жалуется.
Сколько времени проходит после отправки пакета открытого ключа в ожидании ответа в случае сбоя? Если это я
У меня часто возникали проблемы с ssh из-за того, что один и тот же MAC-адрес ассоциировался с несколькими именами компьютеров и наоборот. Для этого есть параметры командной строки ssh. Вы также можете удалить или отредактировать файл известных хостов, чтобы устранить проблему. Не уверен, что это поможет, но это покрывает 90% моих проблем с ssh.
debug1: Offering RSA public key: /home/bar/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
Это указывает на то, что сервер не принял ваш личный ключ. К сожалению, сервер не предоставляет клиенту более подробной информации о том, почему он не принял ключ, поэтому вам действительно необходимо устранить неисправности на сервере.
Я бы начал с проверки syslogs в /var/log
на сервере на наличие любых сообщений от sshd
, указывающих на то, почему он отклонил попытку аутентификации.
Если у вас есть root доступ на удаленном сервере, вы можете запустить отладочный экземпляр sshd
, а затем подключиться к нему с клиентом. На удаленном сервере станьте root и запустите /path/to/sshd -d -p 2222
. В результате будет запущен экземпляр sshd, который прослушивает порт 2222. Он примет одно соединение и распечатает отладочную информацию на ваш терминал.
Затем, на клиенте, запустите ssh
, как обычно, но включите -p 2222
, чтобы подключиться к нужному порту. Если вход не удаётся, проверьте отладочный вывод, напечатанный сервером.
Выполните откат корневых файлов (а не только chmod) обратно под оригинальную учетную запись пользователя. Вы также можете попробовать протестировать с помощью Userify, посмотреть, работает ли она и есть ли у вас открытый ключ без ошибок
.Для меня это была проблема с разрешениями, связанная также с домашним каталогом. Разрешения для домашнего каталога на целевом сервере были установлены на 775. Из того, что я обнаружил, разрешения для домашнего каталога должны быть установлены на 755 или меньше. Это устанавливает его так, чтобы ни один пользователь, кроме владельца домашнего каталога, не мог иметь права на запись.