Добавить открытый ключ в файл known_hosts
Я пытаюсь скопировать открытый ключ из сервера A в файл known_hosts на сервере B. Они оба являются Linux-серверами. Первоначально я думал об открытии файла открытого ключа и копировании его содержимого в файл known_hosts, но я подозреваю, что это неправильный метод. Кто-нибудь знает, как правильно это сделать?
Мой открытый ключ находится в формате ssh-rsa AADGD...
Может кто-нибудь помочь?
Спасибо!
Ответы
Ответ 1
Я ответил почти аналогичный ответ на SuperUser несколько дней назад. Важные части:
- Формат отличается
- На каждом сервере есть разные ключи (типы) (убедитесь, что вы вставляете тот, который фактически используется)
- Существует
ssh-keyscan
, который может создать формат для вас
В противном случае просто префикс вашего ключа с IP-адресом сервера (вы можете добавить также имя хоста после запятой), удалите комментарий с конца строки, и вы в порядке. Формат выглядит следующим образом:
11.22.33.44 ssh-rsa AADGD...
И еще одно замечание: если вы используете HashKnownHosts yes
(Debian и Ubuntu делает), вам нужно повторно использовать ваш known_hosts
, например:
ssh-keygen -Hf ~/.ssh/known_hosts
Ответ 2
Вот как я это сделал.
- Сгенерируйте ключ на хост-сервере. Используя приведенную ниже команду.
* ssh-keyscan -t rsa полное имя сервера
![Command line and output]()
- Теперь скопируйте выделенный раздел (на рисунке) и добавьте этот ключ в файл known_host на исходном сервере. Конечно, местоположение этого файла может быть различным для разных сред.
Ответ 3
Просто столкнувшись с этой проблемой, вот как я подошел к ней:
Со временем копирую файлы механически через
ssh-keyscan server-name >> ~/.ssh/known_hosts
дал мне повторяющиеся записи в .ssh/known_hosts.
Другие ручные методы требовали от меня создания каталога .ssh
еще не существует, и т.д.
Я решил просто позволить ssh
справиться с этим:
ssh -o StrictHostKeyChecking=no server-name ls
Параметр -o StrictHostKeyChecking=no
автоматически отвечает "да" на
The authenticity of host 'server-name (12.345.678.900)' can't be established.
RSA key fingerprint is XXXXXXX.
Are you sure you want to continue connecting (yes/no)?
сообщение (укажите здесь все предупреждения о случайном подключении к компьютерам, которые вы не знаете).
Команда ls
- это просто пуховая команда, которая будет выполнена и заставит SSH отключиться после завершения. Вы можете изменить его на любую команду пуха, которая вам нравится.
ssh позаботится о создании .ssh
dir (при необходимости), добавлении только одной копии ключа и т.д.
Платформа: macOS 10.14
Ответ 4
Предполагая, что у вас есть файл с именем publickey.pub
, сделайте это:
scp
public key .pub
на желаемых серверах
- запустить для экземпляров AWS ubuntu sudo/bin/bash -c "cat/$USER_PATH/public_key.pub >> $ USER_PATH/.ssh/authorized_keys"
- для
known_hosts
= запустить 'sudo/bin/bash -c "cat/$USER_PATH/public_key.pub >> $ USER_PATH/.ssh/known_hosts"
- Тест с помощью SSH
Примечание. Обязательно проверьте формат открытого ключа. Те, которые я видел до этого момента, начинаются с алгоритма шифрования, например, ssh-rsa