SSH по-прежнему запрашивает пароль после настройки аутентификации на основе ключей


10

Я успешно создал основанную на ключе аутентификацию для пользователя root с моей машины A на мою машину B.

Теперь я создал нового пользователя на машине B, так же, как на машине A, давайте назовем его USER. Я создал домашний каталог для него на машине B /home/USERи хочу создать для него аутентификацию на основе ключей от машины A к машине B.

Итак, я побежал на машине

  1. ssh-keygen -t rsa, приняли все дорожки, поэтому /home/USER/.ssh/id_rsaи без фраз
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, ввел пароль и получил массаж

Теперь попробуйте войти в машину Bla Bla Bla

Так что, кажется, все в порядке.

Но когда я попытался подключиться, ssh USER@BmachinesIPменя попросили ввести пароль. Я попытался увидеть журнал и побежал, ssh -vvv USER@BmachinesIPи вот часть вывода:

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 public key: /home/USER/.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/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.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
USER@BmachinesIP's password:

Итак, кто-нибудь может сказать мне, что я сделал неправильно или что я должен изменить? Возможно проблема в разрешениях, вот они:

на машине:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

и на машине B:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys

Ответы:


13

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

/home/USER на удаленной машине были предоставлены все разрешения, но для аутентификации на основе ключей должно быть установлено значение 755


2
Ух ты. Удивительно, что нет никаких отладочных выходных данных о разрешениях, даже если они являются центральными в правильной конфигурации открытого ключа.
jchook

Вау, ты прав. Теперь это работает .... хотя я действительно хочу сохранить разрешение, которое было изначально (775). Любая подсказка о том, как это изменить?
Пабло Олмос де Агилера С.

Кажется, что нет никакого способа, только обходной путь будет установлен StrictModes no в sshd_config. : /.
Пабло Олмос де Агилера С.

2
По сути вам нужны эти разрешения:, chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysтогда это работает. Скопировано из ответа Maxime R. здесь: askubuntu.com/questions/54670/passwordless-ssh-not-working
Erik

2
Я сделал все эти изменения разрешений, и он все еще спрашивает у меня пароль, когда я ssh. Я также проверил, что закрытый ключ одинаков на обеих машинах (Ubuntu). Довольно озадачен.
Амальговинус

2

Та же проблема для меня свежая установка CentOS7.

1. проверьте разрешения home dir и разрешения ~ / .ssh и ~ / .ssh / authorized_keys (согласно @erik)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. проверьте настройки / etc / ssh / sshd_config && service sshd restart (после каждого редактирования). Полезно: попробуйте "LogLevel VERBOSE" в sshd_config.

Я все еще получил запрос пароля после проверки всего, что было хорошо.

Запустите ssh-клиент с журналами -vvv:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

Журналы сервера (/ var / log / secure):

Failed publickey for * from * port * ssh2: RSA *

Сервер ssh не отправляет больше информации об ошибке клиенту, так как это может быть угрозой безопасности.

Если я запускаю sshd на другом порту 'sshd -p 5555 -d'. Ключ работал. Логин без пароля в порядке. WTF?

Затем я отключил selinux (установите SELINUX = отключено в / etc / selinux / config) и перезагрузился. Вход без пароля тогда работал нормально.

мои текущие рабочие настройки sshd_config:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

Так что было бы неплохо узнать, можем ли мы изменить что-то маленькое в selinux, чтобы заставить работать без пароля пароль ssh. Кто-нибудь может улучшить ответ?


0

Решение заключается не в отключении SELinux, а в исправлении разрешений SELinux для пользовательского каталога. Контекст каталога пользователя должен быть установлен в user_home_t.

Проверять,

$ sudo ls -Z /home/

Если контекст для вашего пользовательского каталога - что-то, чем user_home_t, SELinux не разрешил бы SSH через открытый ключ в этот пользовательский каталог для этого пользователя.

Чинить,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

Вход на основе ключа теперь должен работать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.