3 шага для входа в SSH без пароля с использованием ssh-keygen и ssh-copy-id

Мы предоставляем услуги удаленного администрирования серверов

3 шага для входа в SSH без пароля с использованием ssh-keygen и ssh-copy-id

Поделиться

Вы можете войти на удаленный сервер Linux без ввода пароля в 3 простых шага, используя ssky-keygen и ssh-copy-id, как описано в этой статье.

ssh-keygen создает открытый и закрытый ключи. ssh-copy-id копирует открытый ключ локального хоста в файл authorized_keys удаленного хоста. ssh-copy-id также назначает правильное разрешение для дома удаленного хоста, ~/.ssh и ~/.ssh/authorized_keys.

В этой статье также рассказывается о 3 небольших неудобствах при использовании ssh-copy-id и о том, как использовать ssh-copy-id вместе с ssh-agent.

Шаг 1. Создайте открытый и закрытый ключи, используя ssh-key-gen на local-host

jsmith@local-host$ [Note: You are on local-host here]

jsmith@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Pess enter key]
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host

Шаг 2. Скопируйте открытый ключ на удаленный хост, используя ssh-copy-id

jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
jsmith@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Примечание: ssh-copy-id добавляет ключи к .ssh/authorized_keys удаленного хоста.

Шаг 3: Войти на удаленный хост без ввода пароля

jsmith@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Note: SSH did not ask for password.]

jsmith@remote-host$ [Note: You are on remote-host here]

Вышеупомянутые 3 простых шага должны выполнить работу в большинстве случаев.
Использование ssh-copy-id вместе с ssh-add / ssh-agent

Если для опции -i не передано значение и если ~/.ssh/identity.pub недоступно, ssh-copy-id отобразит следующее сообщение об ошибке.

jsmith@local-host$ ssh-copy-id -i remote-host
/usr/bin/ssh-copy-id: ERROR: No identities found

Если вы загрузили ключи в ssh-agent с помощью ssh-add , то ssh-copy-id получит ключи от ssh-agent для копирования на удаленный хост. то есть он копирует ключи, предоставленные командой ssh-add -L, на удаленный хост, когда вы не передаете опцию -i в ssh-copy-id .

jsmith@local-host$ ssh-agent $SHELL

jsmith@local-host$ ssh-add -L
The agent has no identities.

jsmith@local-host$ ssh-add
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

jsmith@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa

jsmith@local-host$ ssh-copy-id -i remote-host
jsmith@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
[Note: This has added the key displayed by ssh-add -L]

Три незначительных неприятностей ssh-copy-id

Ниже приведено несколько мелких неприятностей с ssh-copy-id.

  1. Открытый ключ по умолчанию: ssh-copy-id использует ~/.ssh/identity.pub в качестве файла открытого ключа по умолчанию (т. Е. Когда значение не передается параметру -i ). Вместо этого мне бы хотелось, чтобы в качестве ключей по умолчанию использовались id_dsa.pub или id_rsa.pub или identity.pub. т.е. если какой-либо из них существует, он должен скопировать это на удаленный хост. Если два или три из них существуют, он должен скопировать identity.pub по умолчанию.
  2. Агент не имеет идентификаторов: когда ssh-agent работает и ssh-add -L возвращает «Агент не имеет идентификаторов» (т. Е. Ключи не добавляются в ssh-agent), ssh-copy-id все равно будет копировать сообщение «Агент не имеет идентификаторов» для записи authorized_keys удаленного хоста.
  3. Дублирующая запись в авторизованных ключах: я хочу, чтобы ssh-copy-id проверял дублирующую запись на авторизованных ключах удаленного хоста. Если вы выполните ssh-copy-id несколько раз на локальном хосте, он будет продолжать добавлять один и тот же ключ к файлу авторизованному ключу удаленного хоста без проверки на наличие дубликатов. Даже с повторяющимися записями все работает как положено. Но я бы хотел, чтобы мой файл authorized_keys был свободен от беспорядка.
 2019-2020 © linuxadmins all rights reserved

Facebook Twitter Vkontakte