Я ленив дома и использую парольную аутентификацию для своих домашних машин. Я готов перейти к аутентификации на основе ключей. В Интернете есть много вариантов, как это сделать, включая catting, затем sshing ключ, scping ключ напрямую и т.д.
Я ищу самый простой и рекомендуемый способ копирования ключа, надеюсь, где-то в пакете ssh Ubuntu есть удобная обертка?
Я уже знаю как отключить парольные логины.
Команда ssh-copy-id
(находится в пакете openssh-client и установлена по умолчанию) делает именно это:
ssh-copy-id [email protected]
копирует открытый ключ вашей идентификации по умолчанию (для других идентификаций используйте -i identity_file
) на удаленный хост.
Идентификатор по умолчанию - это ваш "стандартный" ключ ssh. Он состоит из двух файлов (открытого и закрытого ключа) в вашем каталоге ~/.ssh
, обычно называемых identity
, id_rsa
, id_dsa
, id_ecdsa
или id_ed25519
(и то же самое с .pub
), в зависимости от типа ключа. Если вы создали не более одного ssh-ключа, вам не нужно беспокоиться об указании идентификатора, ssh-copy-id выберет его автоматически.
Если у вас нет идентификатора, вы можете сгенерировать его с помощью инструмента ssh-keygen
.
Кроме того, если сервер использует порт, отличный от используемого по умолчанию (22
), вы должны использовать кавычки (источник):
ssh-copy-id "[email protected] -p <port-number>"
Мне нравится ответ Марселя. Я не знал этой команды. Я всегда использовал то, что нашел на сайте Oracle:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Я решил опубликовать это здесь, потому что это хорошая иллюстрация того, чего можно достичь в shell-коде с помощью возможностей 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"'
В Ubuntu вы можете извлечь ключи из Launchpad:
ssh-import-id [launchpad account name]
Подробности:
СШ-ОГА AAAAB3Nza .... UyDOFDqJp lekensteyn
Здесь, СШ-ОГАозначает, что этот ключ является ключом RSA,
AAAAB3Nza .... UyDOFDqJp-это реальный ключ и lekensteyn
является комментарием.
4. Сохранить ключ при нажатии открытый ключ импорт
5. Если все прошло хорошо, ключ должен теперь быть перечислены под ключи SSH:
Пакет СШ-импорт-код должен быть установлен на машине, который должен осуществляться дистанционно. Этот пакет устанавливается вместе с пакет OpenSSH-сервер пакет
как это'ы рекомендуемый пакет для пакет OpenSSH-сервер. Убедившись, что
СШ-импорт-код был установлен на клиентском компьютере, выполните:
ssh-import-id [launchpad account name]
Это позволит загрузить открытый ключ от сервера запуска по протоколу HTTPS, который защищает вас от атак MITM.
На Ubuntu Lucid и прежде, вы можете добиться того же с:
wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys
Команда Эхо
нужно сделать дополнительную строку после строки с ключом SSH.
для пользовательского порта
ssh-copy-id -i "[email protected] -p2222"
-я переключаюсь по умолчанию ~/.по SSH/id_rsa.в пабе, если вы хотите другой ключ, поставить на путь клавишу после -я
Предупреждение: Если вы не писали -я его скопирую все ваши ключи нашли в ~/.СШ
SSH-копия-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-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 [email protected]
Перед выполнением команды, я на самом деле использовать ключ -н
в конце, чтобы сделать пробный прогон, который подтвердил, что команда будет работать как задумано. Как только я подтвердил, я снова запустил команду, что и выше, без ключа-N
.