Вопрос Самый простой способ скопировать ключи ssh на другую машину?


Я ленив дома и использую аутентификацию пароля для своих домашних компьютеров. Я готов перейти на проверку подлинности на основе ключей. В Интернете есть много опций о том, как это сделать, в том числе о том, чтобы пропустить ключ, перехватить ключ напрямую и т. Д.

Я ищу самый простой и рекомендуемый способ скопировать ключ, надеюсь, что есть удобная обертка где-нибудь в пакете Ubuntu ssh?

Я уже знаю о как отключить логины для входа в систему,


296
2017-09-27 20:24


происхождения


askubuntu.com/questions/307881/... - Vineet


ответы:


ssh-copy-id команды (в OpenSSH-клиент пакет и установлен по умолчанию) делает именно это:

ssh-copy-id user@hostname.example.com

копирует открытый ключ вашей личности по умолчанию (используйте -i identity_file для других идентификаторов) удаленному хосту.

Идентификатор по умолчанию - это ваш «стандартный» ssh-ключ. Он состоит из двух файлов (открытый и закрытый ключ) в вашем ~/.ssh каталог, обычно называемый identity, id_rsa или id_dsa (и то же самое с .pub), в зависимости от типа ключа. Если вы не создали более одного ключа ssh, вам не нужно беспокоиться о том, чтобы указать идентификатор, ssh-copy-id будет просто выбирать его автоматически.

Если у вас нет идентификатора, вы можете сгенерировать его с помощью инструмента ssh-keygen,

Кроме того, если сервер использует порт, отличный от значения по умолчанию (22) вы должны использовать кавычки таким образом (источник):

ssh-copy-id "user@hostname.example.com -p <port-number>"

408
2017-09-27 21:01



Что такое идентификатор по умолчанию? - Oxwivi
@Oxwivi: Идентификатор по умолчанию - это ваш «стандартный» ключ ssh. Он состоит из двух файлов (открытый и закрытый ключ) в вашем ~/.ssh каталог, обычно называемый `` identity, id_rsa` или id_dsa (и то же самое с .pub), в зависимости от типа ключа. Если вы не создали более одного ключа ssh, вам не нужно беспокоиться о том, чтобы указать файл, ssh-copy-id будет просто выбрать его автоматически. - Marcel Stimberg
для разных портов используйте это: ssh-copy-id "user@host -p 6842" - jibon57
Что делать, если удаленный сервер, который вы копируете, не разрешает приглашений по паролю и в основном заблокирован, кроме SSH-доступа? - Cyle
На mac вы можете сделать brew install ssh-copy-id а затем запустите команду. - Avishai


Мне нравится ответ от Марселя. Я не знал этой команды. Я всегда использовал то, что я нашел на Веб-сайт SUN:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

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

Обратите внимание, что если папка .ssh еще не существует, команда выше не будет выполнена. Кроме того, было бы лучше при создании файла установить минимально возможное разрешение (в основном чтение-запись только для владельца). Вот более продвинутая команда:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

113
2017-10-11 22:26



Эти точные команды также работают с Mac - Mihai P.
Он должен работать под любым Unix с большинством оболочек. Я обновляю сообщение с обновленной командой, если папка .ssh не существует на удаленной стороне. - Huygens
cat не требуется - достаточно обычного перенаправления ввода, например. < ~/.ssh/id_rsa.pub | ssh ... - maxschlepzig
@Huygens Спасибо. Полезнее помнить об этом, потому что вам не нужно ничего устанавливать, и это также может быть полезно для выполнения иностранных команд, например. изменяя разрешения на стороне сервера, как вы продемонстрировали в своем расширенном примере. - Jonathan Komar
Я очень предпочитаю этот путь, так как он позволяет использовать многословный ssh, который полезен при определении того, почему вещи сломаны. sshcopyid просто застыл и никогда не работал, все прошло отлично. - Sirens


Графический метод

  1. открыто Приложения ▸ Пароли и ключи ▸ Мои личные ключи,
  2. Выберите свой ключ, а затем нажмите Дистанционный пульт ▸ Настроить ключ для безопасной оболочки,

Set Up Computer for SSH Connection


25
2017-09-27 20:32



У меня нет «Паролей и ключей шифрования» в моем меню. - Jorge Castro
Какой выпуск Ubuntu вы используете? В Ubuntu 10.04 LTS это должно быть доступно по умолчанию. - ændrük
10.10, просто добавил тег. Ответ Марселя - это то, что я ищу, хотя +1 для вашего рабочего стола. - Jorge Castro
Эта программа seahorse, - Gilles
Я думаю, что это приложение находится в меню System-> Preferences в 10.10 (не могу проверить его прямо сейчас, я на 10.04) - Huygens


На Ubuntu вы можете получить ключи от Launchpad:

ssh-import-id [launchpad account name]

Детали:

  1. Вам нужна учетная запись Launchpad, поэтому Войти или Создать аккаунт
  2. После входа в систему нажмите кнопку рядом с Клавиши SSH:
  3. Вставьте содержимое своего открытого ключевого файла в это поле (включая комментарий). Такой ключ выглядит так:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Вот, ssh-rsa указывает, что ключ является ключом RSA, AAAAB3Nza .... UyDOFDqJp является фактическим ключом и lekensteyn это комментарий.

  4. Сохраните клавишу, нажав Импорт открытого ключа
  5. Если все пойдет хорошо, ваш ключ теперь должен быть указан в разделе Клавиши SSH:

Пакет ssh-import-id должен быть установлен на машине, к которой необходимо получить доступ с удаленного устройства. Этот пакет устанавливается вместе с openssh-serverпакет, поскольку это рекомендуемый пакет для openssh-server, Убедившись, что ssh-import-id был установлен на клиентской машине, запустите:

ssh-import-id [launchpad account name]

Это загрузит открытый ключ с серверов Launchpad через HTTPS, который защитит вас от атак MITM.

На Ubuntu Lucid и раньше вы можете сделать то же самое:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echo команда необходима для получения дополнительной строки строки после строки с ключом SSH.


18
2018-06-10 19:20





для пользовательского порта

ssh-copy-id -i "user@hostname.example.com -p2222"

-i переключается по умолчанию на ~ / .ssh / id_rsa.pub, если вы хотите другой ключ, поместите путь ключа после -i

ПРЕДУПРЕЖДЕНИЕ: Если вы не пишете -i, он скопирует все ваши ключи, найденные в ~ / .ssh


12
2018-03-08 20:16



Вы уверены, что это ПРЕДУПРЕЖДЕНИЕ? "-i identity_file - использовать только ключи, содержащиеся в файле identity_file (вместо поиска идентификаторов через ssh-add (1) или в файле default_ID_file) .Если имя файла не заканчивается на .pub, это добавляется. Если имя файла не используется, используется файл default_ID_file. " - Yousha Aleayoub