ssh-copy-id не работает

19

Я пытаюсь настроить SSH-вход без пароля на CentOS 5.4:

  1. Я сгенерировал открытый ключ RSA на клиенте.
  2. ssh-copy-id от клиента к серверу.
  3. Проверено ~ / .ssh / authorized_keys содержит ключ клиента.

Клиент по-прежнему запрашивает пароль. Что я пропустил?

Благодарю.

РЕДАКТИРОВАТЬ: проверил 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: 
jackhab
источник
Я тоже это понимаю :(
Мэтт Джойнер

Ответы:

19

9/10 раз, потому что ~ / .ssh / authorized_keys не в правильном режиме.

chmod 600 ~/.ssh/authorized_keys
JustinShoffstall
источник
2
К вашему сведению, я создал небольшой скрипт на github.com/centic9/generate-and-send-ssh-key, который выполняет необходимые шаги за один раз и дополнительно обеспечивает все права доступа к файлам / каталогам, которые всегда вызывали у меня головные боли ...
centic
5
Если это не работает для кого-то, вы также должны взглянуть на ответ @ Gilles. В частности, домашний~/.ssh каталог и каталоги не могут быть записаны кем-либо, кроме пользователя.
Острокач
Я знаю, что это старо, но спасибо миллиону @centic. Я был уверен, что мои разрешения были правильными, но никогда не удосужился проверить каталоги $ HOME и .ssh /.
Jdferreira
Работал на меня. Благодарность!
Иван Ковтун
12

Зайдите в / etc / ssh / sshd_config, чтобы разрешить аутентификацию с ключом. У вас должно быть что-то вроде этого, и убедитесь, что строки не закомментированы:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

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

Паткос Чаба
источник
В дополнение к ответу Паткоса Чаба, проверьте права доступа к вашей локальной и удаленной папке ~ / .ssh.
В моем случае это AuthorizedKeysFileбыло закомментировано, и мне также пришлось использовать абсолютный путь к authorized_keys.
Андрей
Я получаю сообщение «Не удалось открыть соединение с вашим агентом аутентификации». при попытке ssh-add
Мантикора
это должен быть выбранный ответ
Франсиско Тапиа
Может быть, вы не понимаете комментарии. Закомментированные строки показывают значения по умолчанию. Вам не нужно раскомментировать их, если вы хотите значение по умолчанию. Вам нужно только раскомментировать свойство, если вы хотите переопределить значение по умолчанию.
ясный свет
5

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

sudo chmod 0755 /home/username
Чарли
источник
1
Ях! Работал на меня. SSH дал мне запрос пароля, потому что я испортил разрешения.
ясный свет
4

Я здесь не эксперт, но тоже сталкивался с такой проблемой, вот мои два цента в дополнение ко всем другим предложениям.

Иногда ssh-copy-idкопирует неправильный ключ на удаленный сервер (это может произойти, если у вас есть несколько ключей и / или вы используете нестандартные имена для файлов ключей), или ваш агент аутентификации неверно настроен.

Вот цитата из справочных страниц :

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

В общем, вы хотите проверить, что:

  • Ваш системный агент аутентификации (обычно ssh-agent) видит ключи, которые вы намереваетесь использовать (проверьте 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, который в свою очередь взят из openssh-portable. Моя страница
Кристиан Ульбрих
3

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

Если это не проблема, запустите ssh -vvv serverи посмотрите на мнение клиента о разговоре. В частности, проверьте, что клиент пытается ключ с сервером.

Жиль "ТАК - перестань быть злым"
источник
Спасибо!!! Я не понимаю , почему, но ваш домашний каталог , ~/.sshи ~/.ssh/authorized_keysне может быть записываемые никем , кроме вас.
Острокач
2

В дополнение ко всему вышесказанному всегда можно проверить файл журнала sshd:

/var/log/auth.log
Омер Даган
источник
1

Я попробовал другие исправления, но обнаружил, что мне пришлось изменить домашний каталог, чтобы другие пользователи не могли его записать. Домашний каталог был 777. Я изменил его на 755, и он работал.

dulcana
источник
1
добро пожаловать @dulcana, он пытается установить ssh пароль без пароля, как изменение разрешений на 755 может помочь решить проблему?
Франциско Тапиа
@FranciscoTapia потому, что sshd гарантирует, что другие пользователи не могли злонамеренно создать файл author_keys, отказываясь войти в систему с помощью ключа ssh, где группа или другой пользователь могут записать файл или любого из своих родителей. Другие ответы также упоминали об этом.
Анхель
0

в моем случае / etc / ssh / sshd_config содержал следующий параметр:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Но ssh-copy-id создал файл с именем author_keys, поэтому мне пришлось изменить запись на новое имя. больше информации о устаревших авторизованных ключах

laplasz
источник
0

В качестве дополнения к ответу Омера Дагана для новой CentOS 7 используйте:

journalctl -f -u sshd

для просмотра логов sshd на сервере.

david.perez
источник
-1

Проблема была в том, что у меня отключена аутентификация RSA в / etc / ssh / ssh_config

jackhab
источник