ssh-copy-id не працює


19

Я намагаюся налаштувати безкоштовний логін SSH на CentOS 5.4:

  1. Я створив відкритий ключ RSA на клієнті.
  2. ssh-copy-id від клієнта до сервера.
  3. Підтверджений ~ / .ssh / autori_keys містить ключ клієнта.

Клієнт все ще запросив пароль. Що я пропустив?

Спасибі.

EDIT: перевірено ssh_config та дозволи, згідно з рекомендаціями. Це інформація про налагодження від клієнта:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.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
saguna@192.168.1.75's password: 

Я також розумію це :(
Метт Столяр

Відповіді:


19

У 9/10 разів це тому, що ~ / .ssh / санкціонований_кейс знаходиться не в потрібному режимі.

chmod 600 ~/.ssh/authorized_keys

2
FYI, я створив невеликий сценарій на github.com/centic9/generate-and-send-ssh-key, який виконує необхідні кроки за один раз і додатково забезпечує всі дозволи файлів / каталогів, які завжди викликали у мене головні болі ...
centic

5
Якщо це комусь не підходить, слід також подивитися на відповідь @ Gilles. Зокрема, додому та~/.ssh каталоги ніхто не може записувати, крім користувача.
ostrokach

Я знаю, що це старе, але дякує мільйон @centic. Я був впевнений, що мої дозволи були правильними, але ніколи не намагався перевірити $ HOME та .ssh / каталоги.
jdferreira

Працювали для мене. Спасибі!
Іван Ковтун

12

Перевірте / etc / ssh / sshd_config, щоб дозволити автентифікацію ключа. У вас має бути щось подібне, і рядки не коментуються:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: не забудьте перезапустити sshd після зміни файлу (/etc/init.d/sshd перезапуск)


Окрім відповіді Паткоса Цаби, перевірте дозволи вашої локальної та віддаленої папки ~ / .ssh.

У моєму випадку це AuthorizedKeysFileбуло прокоментовано, і мені також довелося скористатися абсолютним шляхом authorized_keys.
Андрій

Я отримую "Не вдалося відкрити з'єднання з вашим агентом аутентифікації". при спробі ssh-add
Manticore

це повинна бути обрана відповідь
Франциско Тапія

Можливо, ви не розумієте коментарів. У коментованих рядках відображаються значення за замовчуванням. Не потрібно їх коментувати, якщо ви хочете значення за замовчуванням. Коментувати властивість потрібно лише в тому випадку, якщо ви хочете змінити значення за замовчуванням.
clearlight

5

Я виявив, що з моєю системою проблема полягала в тому, що каталог користувачів (/ home / username) був обладнаний неправильним дозволом. Це було drwxr-x-w-і потрібно було drwxr-xr-x(з дозволу на написання лише власнику). Рішенням було використання chmod:

sudo chmod 0755 /home/username

1
Так! Працювали для мене. ssh дав мені запит на введення пароля, тому що я отримав збірну даних.
clearlight

4

Я тут не експерт, але натрапив і на таке питання, ось два мої центи на додаток до всіх інших пропозицій.

Іноді ssh-copy-idкопіюється неправильний ключ на віддалений сервер (це може статися, якщо у вас є кілька клавіш та / або ви використовуєте імена, які не використовуються за замовчуванням для ключових файлів) або ваш агент автентифікації неправильно налаштований.

Ось цитата зі сторінок man :

Якщо параметр -i заданий, тоді використовується ідентифікаційний файл (за замовчуванням ~ / .ssh / id_rsa.pub), незалежно від того, чи є у вашому ssh-агенті ключі. В іншому випадку, якщо це: ssh-add -L надає будь-який вихід, він використовує цей параметр у файлі ідентичності.

Тому в основному ви хочете перевірити це:

  • Ваш агент автентифікації системи (зазвичай ssh-агент) бачить ключі, які ви маєте намір використовувати (перевірити ssh-add -Lвихід)
    • Якщо ви не бачите потрібного ключа, додайте його за допомогою ssh-add
  • ssh-copy-idСкопіював той же ключ до віддаленої машині (тільки увійти на віддалений сервер з допомогою пароля, щоб переглянути вміст ~/.ssh/authorized_keys)
    • Якщо ви не бачите потрібний ключ на віддаленому сервері, ви можете неявно сказати, ssh-copy-idякий ключ скопіювати:ssh-copy-id -i ~/.ssh/some_public_key

Сподіваюся, що це допомагає.


1
Ти впорався! Перекопавшись через мою ssh-copy-id проблему:: DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1), який за замовчуванням є алфавітним першим ключем - у моєму випадку я мав id_boot2docker.pub(що, мабуть, ім'я за замовчуванням для boot2docker ssh речі). Схоже, існує купа різних реалізацій ssh-copy-id; прийшов мій brew install ssh-copy-id, який у свою чергу взято з opensh-portable. Моя сторінка чоловіка прямо згадує про таку поведінку ...
Крістіан Ульбрих

3

Найпоширеніша проблема - це недійсні дозволи на стороні сервера. Перевірте, чи немає у вашому домашньому довіднику, ~/.sshі ~/.ssh/authorized_keysїх не пишуть ніхто, крім вас (зокрема, вони не повинні бути доступними для запису групи).

Якщо це не проблема, запустіть ssh -vvv serverі перегляньте погляд клієнта на розмову. Зокрема, перевірте, чи клієнт пробує ключ із сервером.


Дякую!!! Я не розумію , чому, але ваш домашній каталог , ~/.sshі ~/.ssh/authorized_keysне може бути записуються ніким , крім вас.
ostrokach

2

Крім усього вищезазначеного, завжди можна перевірити файл журналу sshd:

/var/log/auth.log

1

Я спробував інші виправлення, але виявив, що мені довелося змінити домашній каталог, щоб він не міг писати інші. Домашній каталог був 777. Я змінив його на 755 і він працював.


1
Ласкаво просимо @dulcana, він намагається встановити логін без паспорта, як зміна дозволів на 755 може допомогти вирішити проблему?
Франсіско Тапія

@FranciscoTapia тому, що sshd гарантує, що інші користувачі не могли зловмисно створити файл санкціоновані_кейси, відмовившись увійти за допомогою ключа ssh, де група чи інша людина може написати файл або будь-хто з батьків. Інші відповіді також згадували про це.
Ángel

0

у моєму випадку / etc / ssh / sshd_config містився такий параметр:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Але ssh-copy-id створив файл з ім'ям_повноважених ключів, тому мені довелося змінити запис до нового імені. більше інформації про застарілі дозволені_кейси2


0

Як доповнення до відповіді Омера Дагана для новішої CentOS 7 використовуйте:

journalctl -f -u sshd

для перегляду журналів sshd на сервері.


-1

Проблема полягала в тому, що у мене відключено RSAAuthentication в / etc / ssh / ssh_config

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.