По какой-то причине я не могу использовать 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 для подсказок.
В качестве последнего совета просмотрите:
Проверьте свои разрешения, они должны быть
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
'Достаточно...