Я ленив дома и использую аутентификацию пароля для своих домашних компьютеров. Я готов перейти на проверку подлинности на основе ключей. Есть много вариантов в Интернете о том, как это сделать, в том числе котировки, затем sshing ключ, прочесывание ключа напрямую и т. Д.
Я ищу самый простой и рекомендуемый способ скопировать ключ поверх , надеюсь, есть где-нибудь в пакете Ubuntu ssh?
Я уже знаю, как отключить логины для входа в систему.
Команда 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>"
Команда 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>"
в 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.
страница руководства СШ-импорт-идентификаторМне нравится ответ от Марселя. Я не знал этой команды. Я всегда использовал то, что я нашел на веб-сайте 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"'
для пользовательского порта
ssh-copy-id -i "user@hostname.example.com -p2222"
-i по умолчанию установлен на ~ / .ssh / id_rsa.pub, если вы хотите другой ключ, введите путь ключа после -i
ПРЕДУПРЕЖДЕНИЕ. Если вы не пишете -i, он скопирует все ваши ключи, найденные в ~ / .ssh
На 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Мне нравится ответ от Марселя. Я не знал этой команды. Я всегда использовал то, что я нашел на веб-сайте 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"'
для пользовательского порта
ssh-copy-id -i "user@hostname.example.com -p2222"
-i по умолчанию установлен на ~ / .ssh / id_rsa.pub, если вы хотите другой ключ, введите путь ключа после -i
ПРЕДУПРЕЖДЕНИЕ. Если вы не пишете -i, он скопирует все ваши ключи, найденные в ~ / .ssh
[/g1]