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

270

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

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

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

задан Jorge Castro 27.09.2010 в 22:24
источник

5 ответов

377

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

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>"
    
ответ дан Marcel Stimberg 27.09.2010 в 23:01
источник
103

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

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

Я думал разместить его здесь еще, потому что это хорошая иллюстрация того, что может быть достигнуто в shell code с мощностью 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"'
    
ответ дан Huygens 12.10.2010 в 00:26
источник
22

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

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

    
ответ дан ændrük 27.09.2010 в 22:32
источник
18

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

ответ дан Lekensteyn 10.06.2011 в 21:20
источник
12

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

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

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

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

    
ответ дан Omar A. Shaban 08.03.2013 в 21:16
источник

Ознакомьтесь с другими вопросами по меткам