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

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

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

Я уже в курсе , как отключить пароли логинов .

347
задан 12 April 2017 в 10:23

8 ответов

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

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

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

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

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

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

ssh-copy-id "user@hostname.example.com -p <port-number>"
0
ответ дан 12 April 2017 в 10:23

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

  1. Открыть Приложения Пароли и ключи Мои персональные ключи .
  2. Выберите ключ и затем нажмите Удаленный Настройка ключа для Secure Shell .

Set Up Computer for SSH Connection

0
ответ дан 12 April 2017 в 10:23

Мне нравится ответ от Марселя. Я не знал эту команду. Я всегда использовал то, что я нашел на веб-сайте 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"'
0
ответ дан 12 April 2017 в 10:23

В 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.

0
ответ дан 12 April 2017 в 10:23

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

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

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

ВНИМАНИЕ: Если вы не написали -i, он скопирует все ваши ключи, найденные в ~ / .ssh

0
ответ дан 12 April 2017 в 10:23

ssh-copy-id делает точно это. Я не уверен, почему некоторые из других ответов здесь добавляют неточную информацию. Справка показывает следующее:

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

я просто попробовал следующий клиент Ubuntu 18.04 сервером CentOS 7.6, и он работал как очарование. Шоу в качестве примера с помощью пользовательского порта 2222, и указывая открытый ключ по телефону ~/.ssh/path-to-rsa.pub

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld

Прежде, чем выполнить команду, я на самом деле использовал эти -n переключатель в конце, чтобы сделать пробный прогон, который подтвердил, что команда будет работать, как предназначено. После того как я подтвердил это, я выполнил команду снова как выше, без эти -n переключатель.

0
ответ дан 5 September 2019 в 09:42

Вот менее безопасное, но очень простое решение (не рекомендуется для серверов):

Переместите ~ / .ssh на новую машину и запустите ssh-add . ВЫПОЛНЕНО!

ПОЛНЫЙ ОТВЕТ:

  1. На старой машине перенесите папку ~ / .ssh на USB-накопитель или в любое другое хранилище, которое вам нравится.
  2. На новом компьютере поместите папку в папку ~ , также известную как / home / $ USER .
  3. Запустите ssh-add , на новой машине все готово.
11
ответ дан 11 February 2020 в 17:02

Если у вас уже есть ключ хоста, как в случае с AWS EC2, сделайте так

cat ~/.ssh/id_rsa.pub | ssh -i hostkey.pem hostname@hostaddress 'cat >> .ssh/authorized_keys && echo "Key copied" '

В следующий раз просто сделайте так:

ssh hostname@hostaddress
0
ответ дан 11 April 2020 в 10:25

Другие вопросы по тегам:

Похожие вопросы: