SSH все ще запитує пароль після встановлення автентичності на основі ключа


10

Я успішно створив auth на основі ключа для користувача root з моєї машини A на мою машину B.

Тепер я створив нового користувача на машині B, такий же, як і на машині A, давайте назвемо його USER. Я створив для нього домашній dir на машині 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). Будь-яка підказка про те, як це змінити?
Пабло Олмос де Агілера C.

Здається, що немає ніякого способу, лише шляхом вирішення буде встановлено StrictModes no в sshd_config. : /.
Пабло Олмос де Агілера C.

2
По суті, вам потрібні ці дозволи:, chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysтоді він працює. Скопійовано з відповіді Максима Р. звідси: askubuntu.com/questions/54670/passwordless-ssh-not-working
erik

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

2

Ця ж проблема для мене в установці свіжої CentOS7.

1. перевірте дозволи на домашній dir та дозволи ~ / .ssh та ~ / .ssh / pooblasti_keys (відповідно до @erik)

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

2. перевірте / etc / ssh / sshd_config налаштування та & перезапуск служби sshd (після кожного редагування) Корисно: спробуйте "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, щоб отримати без паролів sh логін для роботи. Чи може хтось покращити відповідь?


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.