it-roy-ru.com

Добавить открытый ключ в файл known_hosts

Я пытаюсь скопировать открытый ключ с сервера A в файл known_hosts на сервере B. Они оба являются серверами Linux. Сначала я думал об открытии файла открытого ключа и копировании его содержимого в файл known_hosts, но я подозреваю, что это неправильный метод. Кто-нибудь знает, как правильно это сделать?

Мой открытый ключ в формате ssh-rsa AADGD...

Может кто-нибудь помочь?

Спасибо!

11
Trung Tran

Я ответил почти на аналогичный ответ на SuperUser несколько дней назад. Важные части:

  • Формат отличается
  • На каждом сервере существуют разные ключи (типы) хостов (убедитесь, что вы вставили тот, который фактически используется)
  • Существует ssh-keyscan, который может создать формат для вас

В противном случае просто добавьте ваш ключ к IP-адресу сервера (вы также можете добавить имя хоста после запятой), удалите комментарий в конце строки, и все в порядке. Формат тогда выглядит так:

11.22.33.44 ssh-rsa AADGD...

И еще одно замечание: если вы используете HashKnownHosts yes (Debian и Ubuntu используют), вам нужно повторно хэшировать свой known_hosts, например:

ssh-keygen -Hf ~/.ssh/known_hosts
6
Jakuje

Вот как я это сделал.

  1. Сгенерируйте ключ на хост-сервере. Используя приведенную ниже команду. 

* ssh-keyscan -t rsa полное имя-сервера

Командная строка и вывод

  1. Теперь скопируйте выделенный раздел (на рисунке) и добавьте этот ключ в файл «known_Host» на исходном сервере. Конечно, местоположение этого файла может быть различным для разных сред.
2
user2373210

Просто столкнувшись с этой проблемой, вот как я подошел к ней:

Со временем копирую файлы механически через

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 (при необходимости), добавлении только одной копии ключа и т. д.

Платформа: macOS 10.14

1
JS.