Назад | Перейти на главную страницу

SSH-соединение запрашивает пароль, хотя ключ принят

У меня запрашивают пароль, хотя похоже, что мой SSH-ключ принят. Насколько я могу судить, строка «Сервер принимает ключ: pkalg ssh-rsa blen 277» в журналах ниже означает, что мой ключ принят.

Вот журналы отладки:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/sam/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp <<HASH REDACTED>>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/sam/.ssh/id_dsa
debug1: Trying private key: /home/sam/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1

Помощь очень ценится, все, кого я нашел, у кого проблемы с SSH, терпят неудачу на более раннем этапе, который я вижу.

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

  • Ваш ~/.ssh/authorized_keys файл слишком открыт. Для вашей защиты sshd пытается защитить вас от самого себя. Если разрешения на ваш авторизованный файл ключей, то он не пройдет аутентификацию. Бегать chmod -R go-rwx ~/.ssh.
  • Ваш открытый ключ в ~/.ssh/authorized_keys неправильно сформирован. Это может быть результатом любого количества проблем, но наиболее распространенной является проблема копирования и вставки. Некоторые терминалы при копировании / вставке между экранами интерпретируют перенос строки как новую строку. Каждая запись в authorized_keys файл должен быть одной строкой. Вы можете проверить это, изменив размер вашего эмулятора терминала и посмотрев, есть ли разрыв, сравнив вывод wc -l ~/.ssh/authorized_keys против количества ключей, которые должен быть там, или как вам удобнее. Просто убедитесь, что каждая клавиша - одна строка, и все будет в порядке.

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

Вы проверили журнал аутентификации на сервере, к которому подключаетесь? (например, /var/log/auth.log). Если ваша установка на удаленном конце неверна, например неправильные разрешения, то ssh -v (или -vv или -vvv) не сообщит вам об этом, но это будет зарегистрировано sshd.

В моем случае файл /var/log/authlog показал:

[ID 800047 auth.info] Authentication refused: bad ownership or modes for directory 

Я проверил правильность владения / разрешений в .ssh но $HOME было 777 разрешений. Установка 755 разрешений на $HOME разрешил sftp работать. Еще раз спасибо.

Если у вас есть доступ к серверу (напрямую или через другой логин), проверьте логины сервера (скажем) /var/log/sshd или /var/log/secure в зависимости от вашей системы

Обычно это вызвано ошибкой разрешений на вашем ~/.ssh/authorized_keys файл. Убедитесь, что он не доступен для чтения всем, но, что особенно важно, чтобы он был доступен для чтения пользователю (иногда пользователю службы), запускающему sshd

Разрешения ~/.ssh/authorized_keys в удаленном важно (600 для моих систем RHEL и Solaris)

Разрешения вашего домашнего каталога на удаленном компьютере важны (700 в моих системах)

В конце запустить sshd на удаленной машине в режиме отладки на другом порту может быть полезно:

sudo /usr/sbin/sshd -p 5555 -dd

5555 это пример порта, вы можете его изменить. Для получения дополнительной информации по этому поводу вы можете увидеть: http://ubuntuforums.org/archive/index.php/t-2219973.html

Я обнаружил, что есть проблема, если я использую sshd служба. Чтобы избежать этой проблемы, остановите sshd служба с service sshd stop а затем запустите sshd демон из командной строки с sudo /usr/sbin/sshd.

Пытаться

/sbin/restorecon -r /root/.ssh

Возможная проблема с настройкой разрешений.