ОБНОВЛЕНИЕ: я решил эту странную проблему, просто перезапустив sshd
. Однако мне все еще интересно, почему, потому что я не менял никаких конфигураций с момента запуска сервера.
У меня 2 сервера, на одном установлена CentOS 5, а на другом CentOS 6. ssh
publickey отлично работает на CentOS 5, но не работает на CentOS 6. Я подтвердил разрешения .ssh
каталог, это нормально.
[root@localhost ~]# ls -Z .ssh/
drwxr-xr-x. root root unconfined_u:object_r:ssh_home_t:s0 .
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 ..
-rw-r--r--. root root unconfined_u:object_r:ssh_home_t:s0 authorized_keys
-rw-------. root root unconfined_u:object_r:ssh_home_t:s0 id_rsa
-rw-r--r--. root root unconfined_u:object_r:ssh_home_t:s0 id_rsa.pub
-rw-r--r--. root root unconfined_u:object_r:ssh_home_t:s0 known_hosts
ОБНОВЛЕНИЕ: я пробовал несколько разрешений, в том числе 600, 644 для authorized_keys
, и 700, 755 для .ssh/
, все они не работают.
ssh -vvv
дает это сообщение
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
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: /Users/zuohaocheng/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /Users/zuohaocheng/.ssh/id_dsa
debug3: no such identity: /Users/zuohaocheng/.ssh/id_dsa
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
Все в sshd_config
по умолчанию. Также я скопировал публичный ключ через ssh-copy-id
.
Если вы используете selinux, это может быть проблемой. Тип каталога .ssh и файлов под ним должен быть ssh_home_t. Вы можете проверить с помощью ls -Z и восстановить с помощью restorecon -Rv .ssh.
В / var / log / secure также могут быть более подробные сообщения об ошибках.
Какие разрешения на ~/
(ваш домашний каталог)? Вы не можете разрешить разрешения на любом уровне, которые позволили бы другим перезаписать ваш ~/.ssh
каталог. Если ваш домашний каталог более разрешен, чем 755, вам будет предложено ввести пароль.
Права доступа к каталогу / файлу должны выглядеть следующим образом:
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
ls -l ~/.ssh
должен показать вам разрешения chmod. Проверить, если PermitRootLogin Yes
включен, поскольку вы копируете ключ pub, сгенерированный в корневом каталоге .ssh. Это могло вызвать проблему.
У вас неправильное разрешение на authorized_keys
. Вы должны отключить разрешение на чтение для группы и других.
Разрешение на authorized_keys должно быть 600, чтобы аутентификация с открытым ключом работала.
Я сталкиваюсь с той же проблемой, и оказывается, что это связано с тем, что я переместил свой домашний каталог на другой диск (из-за недостатка места), а настройкам безопасности по умолчанию не нравится это новое место, поэтому я не могу или не буду найти мой каталог .ssh. Пытаюсь придумать обновить настройки ssh_home_t.