Элегантный более короткий способ скопировать мой открытый ключ на сервер [duplicate]

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

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

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

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

11 ответов

Команда 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>"
400
ответ дан 17 July 2018 в 19:30

Команда 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>"
400
ответ дан 23 July 2018 в 20:15

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

Открытые приложения ▸ Пароли и ключи ▸ Мои личные клавиши. Выберите свой ключ и нажмите «Удаленный» → «Настроить ключ для безопасной оболочки».

25
ответ дан 17 July 2018 в 19:30

в Ubuntu вы можете извлечь ключи из launchpad:

ssh-import-id [launchpad account name]

подробности:

Вы должны иметь учетную запись на launchpad значит войти или создать учетную запись после входа в систему, нажмите кнопку рядом с ключами SSH: Вставьте содержимое файла открытого ключа в этой области (в том числе комментарии). Такой ключ выглядит так: ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn здесь, ssh-rsa указывает, что ключ-это ключ RSA, AAAAB3Nza .... UyDOFDqJp это реальный ключ и lekensteyn - это комментарий. Сохраните ключ, нажав открытого ключа Импорт, если все прошло хорошо, ключ должен теперь быть перечислены по SSH-ключам:

пакет ssh-import-id должен быть установлен на машине, который должен осуществляться дистанционно. Этот пакет устанавливается вместе с пакетом [F9] и как это рекомендуется для openssh-server. Убедившись, что на [F11] был установлен на клиентском компьютере, запустите:

ssh-import-id [launchpad account name]

это скачать открытый ключ от сервера запуска по протоколу https, который защищает вас от атак mitm.

[dиода d17]в Ubuntu lucid и прежде, вы можете добиться того же с:[!dиода d17] wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

в echo команда нужна, чтобы получить дополнительный символ новой строки после строки с ключа SSH.

страница руководства СШ-импорт-идентификатор
18
ответ дан 17 July 2018 в 19:30

Мне нравится ответ от Марселя. Я не знал этой команды. Я всегда использовал то, что я нашел на веб-сайте 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"'
110
ответ дан 17 July 2018 в 19:30

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

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

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

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

12
ответ дан 17 July 2018 в 19:30

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

Открытые приложения ▸ Пароли и ключи ▸ Мои личные клавиши. Выберите свой ключ и нажмите «Удаленный» → «Настроить ключ для безопасной оболочки».

25
ответ дан 23 July 2018 в 20:15
  • 1
    У меня нет & quot; Пароли и ключи шифрования & quot; в моем меню. – Jorge Castro 28 September 2010 в 01:33
  • 2
    Какой выпуск Ubuntu вы используете? В Ubuntu 10.04 LTS это должно быть доступно по умолчанию. – ændrük 28 September 2010 в 01:46
  • 3
    10.10, просто добавил тег. Ответ Марселя-это то, что я ищу, хотя +1 для рабочего стола, ориентированный ответ! – Jorge Castro 28 September 2010 в 02:04
  • 4
    Эта программа seahorse. – Gilles 28 September 2010 в 02:12
  • 5
    Я думаю, что это приложение находится в меню System- & gt; Preferences в 10.10 (не могу проверить его прямо сейчас, я на 10.04) – Huygens 12 October 2010 в 03:07

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

ssh-import-id [launchpad account name]

Подробности:

Вам нужна учетная запись Launchpad, чтобы войти в систему или создать учетную запись. После входа в систему нажмите кнопку рядом с SSH-ключами: Вставьте содержимое вашего файла открытого ключа в это поле (включая комментарий). Такой ключ выглядит следующим образом: ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn Здесь ssh-rsa указывает, что ключ является RSA-ключом, AAAAB3Nza .... UyDOFDqJp является фактическим ключом, а lekensteyn является комментарием. Сохраните ключ, нажав Импорт открытого ключа. Если все пошло хорошо, ваш ключ теперь должен быть указан под ключами 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.

Страница руководства ssh-import-id
18
ответ дан 23 July 2018 в 20:15

Мне нравится ответ от Марселя. Я не знал этой команды. Я всегда использовал то, что я нашел на веб-сайте 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"'
111
ответ дан 23 July 2018 в 20:15
  • 1
    Эти точные команды также работают с Mac – Mihai P. 20 February 2015 в 08:09
  • 2
    Он должен работать под любым Unix с большинством оболочек. Я обновляю сообщение с обновленной командой, если папка .ssh не существует на удаленной стороне. – Huygens 1 March 2015 в 18:54
  • 3
    [F1] не требуется - нормальное перенаправление ввода достаточно, например. [F2] – maxschlepzig 18 March 2016 в 02:44
  • 4
    @Huygens Спасибо. Полезнее помнить об этом, потому что вам не нужно ничего устанавливать, и это также может быть полезно для выполнения иностранных команд, например. изменяя разрешения на стороне сервера, как вы продемонстрировали в своем расширенном примере. – Jonathan Komar 21 March 2016 в 17:15
  • 5
    Я очень предпочитаю этот путь, так как он позволяет использовать многословный ssh, который полезен при определении того, почему вещи сломаны. sshcopyid просто застыл и никогда не работал, все прошло отлично. – Sirens 30 May 2017 в 02:03

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

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

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

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

12
ответ дан 23 July 2018 в 20:15
  • 1
    Вы уверены, что это ПРЕДУПРЕЖДЕНИЕ? "-i identity_file - Использовать только ключ (ы), содержащийся в файле identity_file (вместо поиска идентификаторов через ssh-add (1) или в файле default_ID_file). Если имя файла не заканчивается на .pub, это добавляется. Если имя файла опущено, используется файл default_ID_. & Quot; – Yousha Aleayoub 22 April 2015 в 23:37

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

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

Set Up Computer for SSH Connection [/g1]

25
ответ дан 5 August 2018 в 01:55

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

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