Я помню, что есть команда отправить открытый ключ на удаленный хост, который я хочу. Я хочу использовать эту функцию для отправки одного из моих открытых ключей другому хосту. Как я могу это сделать?
Команда отправки открытого ключа на удаленный хост
Ответ 1
Вы ищете ssh-copy-id
. Вся эта команда создает .ssh
и .ssh/authorized_keys
и соответствующим образом устанавливает их разрешения, если они не существуют. Затем он добавляет ваш открытый ключ в конец .ssh/authorized_keys
.
Ответ 2
Возможно, вы ищете эту команду:
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Он добавляет ваш открытый ключ к разрешенным серверам ключам.
Ответ 3
Если ваш сервер уже настроен на не принимать пароль на основе логина, вы можете получить ошибку Permission denied (publickey)
.
Это еще один способ отправки ключа с помощью netcat
, поэтому вам не нужно аутентифицироваться. Он будет работать только через локальную сеть, но вы можете использовать переадресацию портов, чтобы сделать это через Интернет.
На сервере:
$ nc -l 55555 >> ~/.ssh/authorized_keys
На клиенте (замените HOSTNAME
на имя хоста или IP-адрес сервера):
$ nc HOSTNAME 55555 < ~/.ssh/id_rsa.pub
Вы можете заменить 55555
на открытый порт по вашему выбору.
source: общаться через lan от linux до linux?
Приложение для новых новичков: я не думаю, что кто-то упомянул об этом, но если вы получаете ERROR: failed to open ID file '/home/username/.pub': No such file
, вам нужно сначала создать ключ. На страницах справки Ubuntu есть отличный справочник по Генерация ключей RSA.
Ответ 4
Выбранный ответ правильный, но вот простой bash script для всех, кто хочет комбинировать keygen + copy: https://gist.github.com/wilcollins/bc420581da87962b8b47
Этот файл создает ключ SSH на клиентской машине, применяет соответствующие разрешения файлов, копии в локальный каталог ~/.ssh и копирует на указанный сервер.