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

SSH без пароля

По какой-то причине я не могу использовать ssh без пароля на новом ящике CentOS.

Я пробовал следовать этим руководствам:

Но ни один из них не работает. Я даже проверил свой /etc/ssh/sshd_config файл. PubkeyAuthentication yes был изначально закомментирован, поэтому я раскомментировал эту строку и перезапустил sshd, но все равно безрезультатно. Есть мысли о чем-то еще, чего могло не хватать?

Я пытаюсь установить ssh с сервера A на сервер B как root. Таким образом, вы вошли в систему как root в одном ящике, а затем по ssh в следующем как root без запроса пароля.

ОБНОВИТЬ

Я запустил ssh -v ... но не могу скопировать / вставить сюда. Все выглядело хорошо до этой строки:

debug1: Next authentication method:  gssapi-with-mic
debug1: Unspecified GSS failure.  Minor Code may provide more information
Unknown code krb5 195

Небольшое руководство по аутентификации на основе открытого ключа для CentOS / Red Hat / и т. Д.

На клиенте SSH:

ssh-keygen # Accept all defaults, do not enter a password.
ssh-copy-id USER@SERVER_IP
restorecon -R ~/.ssh

На SSH-сервере:

# Login to the server normally (with password)
restorecon -R ~/.ssh

Аутентификация на основе открытого ключа теперь должна работать.

Эти проблемы (которые являются обычно связанные с разрешениями) намного легче отлаживать со стороны сервера. Я рекомендую вам запустить еще один sshd в режиме отладки с помощью: /usr/sbin/sshd -d -p 2222 который запустит другой sshd на порт 2222, затем запустите ssh -p 2222 user@sshserver на стороне клиента. Посмотрите, что выходит из sshd, когда ваш клиент пытается пройти аутентификацию.

Проблемы с разрешениями не должны быть просто /home/$USER/.ssh. это также может быть проблема с /, /home, или /home/$USER. Если какой-либо из них доступен для групповой записи, это может быть проблемой.

Другая распространенная проблема заключается в том, что вы неправильно вставляете и помещаете разрывы строк в середине вашего ключа в файле authorized_keys

serverA# ls -lah /root
serverA# ls -lah /root/.ssh
serverA# selinuxenabled 
serverA# echo $?

serverB# ls -lah /root
serverB# ls -lah /root/.ssh
serverB# senlinuxenabled
serverB# echo $?

Если это не указывает на проблему, попробуйте следующее. ServerA - это клиент, а serverB - ssh-сервер.

На serverB отредактируйте / etc / ssh / sshd_config. Найдите строку, которая выглядит так:

LogLevel INFO

Измените его на:

LogLevel VERBOSE

Затем:

serverB# /etc/init.d/sshd restart

На serverA:

serverA# ssh -vvv root@serverb

Теперь вы можете повторно получить файл / var / log / secure на serverB для подсказок.

В качестве последнего совета просмотрите:

http://www.ibm.com/developerworks/library/l-keyc/index.html

Проверьте свои разрешения, они должны быть

drwx ------

для тебя .ssh каталог и

-rw -------

для тебя authorized_keys файл.

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

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Если у вас включен SELinux, то это обычная проблема ...

Выполните на сервере SSH следующее:

restorecon -R /home/$USER/.ssh

или для root:

restorecon -R /root/.ssh

'Достаточно...