Как перенести мои ключи SSH на другую машину?

42

У меня есть аккаунты на двух машинах: H1 и H2. Я создал ключи ssh на H1 и установил его на S1. Теперь я могу SSH к S1 от H1. Я хочу сделать то же самое с H2. Как мне установить ключи ssh, сгенерированные на H1 на H2?

Брюс
источник
2
Поскольку ssh-copy-idэто более надежное решение (без перезаписи существующих ключей или случайного копирования закрытого ключа вместо открытого ключа) и менее известное решение, рассмотрите возможность принятия одного из этих ответов в качестве принятого ответа.
agtoever

Ответы:

28

Отредактировано: если у вас есть обе машины, вы можете поделиться своим закрытым ключом. Но это решение небезопасно для случая кражи ноутбука или для машин, которыми вы не владеете.

Вы можете скопировать свои личные ключи с H1 на H2, если вы хотите использовать тот же закрытый ключ, чтобы иметь возможность войти с H2 на S1. Когда вы в H1 делаете команды:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

Предупреждение! Это удалит и заменит любой закрытый ключ, который у вас был на H2.

Лучше всего сгенерировать новые закрытые ключи в H2 ( ssh-keygen) и установить их открытую часть на S1 с помощью ssh-copy-idutil. В этом более безопасном случае у вас будет два набора ключей; один для входа в систему H1-S1, а второй для входа в систему H2-S1. На S1 будет разрешено два открытых ключа. И вы сможете отозвать любой из них или оба (например, когда у вас украли ноутбук или владелец машины решит отключить вашу учетную запись и повторно использовать все ваши файлы).

osgx
источник
8
Копирование закрытого ключа на самом деле не очень хорошая идея. Наличие одного ключа в нескольких местах 1. делает его более уязвимым, 2. увеличивает риск того, что вы потеряли контроль над всеми местоположениями, 3. не позволяет отключить доступ только из одного местоположения. С точки зрения безопасности вы должны генерировать новую пару ключей в каждом месте - решение от Mu Qiao.
Пабук
27

использование ssh-copy-id

СИНТАКСИС

ssh-copy-id [-i [индивидуальный_файл]] [пользователь @] машина

ОПИСАНИЕ

ssh-copy-id - это сценарий, который использует ssh для входа на удаленный компьютер и добавления указанного идентификационного файла в файл ~ / .ssh / authorized_keys этого компьютера.

Му Цяо
источник
1
@ Я хочу сделать SSH с H2 на S1. Я хочу перенести и установить свой закрытый и открытый ключ с H1 на H2. Это сделает это?
Брюс
3
@ Брюс нет, тебе нужно восстановить ключи на h2 и использовать эту команду для копирования своих ключей. Другой подход - разрешить h1 и h2 совместно использовать домашний каталог.
Му Цяо
9

Используйте два закрытых ключа

Настройте H2, используя тот же процесс (но не тот же закрытый ключ), который вы использовали при настройке H1:

  • Никогда не существует веских причин для копирования закрытого ключа с другого компьютера. Если вы еще не сгенерировали новый закрытый ключ на H2, сделайте это сейчас. Также сгенерируйте соответствующий открытый ключ. В терминале на H2,

тип: ssh-keygen -t rsa

  • Скопируйте открытый ключ вашей H2 на сервер. В терминале на H2,

тип: ssh-copy-id username@S1.net

(но используйте свое действительное имя пользователя на S1 и имя хоста S1, а затем введите свой пароль на S1, когда он запросит его).

Это установит открытый ключ вашей рабочей станции в ~/.ssh/authorized_keysфайл для этого пользователя на сервере.

  • Нет шага 3. С этого момента вы можете войти в S1 со своего H2, а также войти в S1 со своего H1.

Детали

Я предполагаю, что вы действительно спрашиваете

  • У меня есть сервер ("S1")
  • Я вхожу в свой сервер с моего личного ноутбука ("H1")
  • Я также хочу войти в свой сервер с моей рабочей станции («H2»).

Как правильно это сделать?

  • Я полагаю, что я мог бы просто войти с тем же паролем из обоих мест. Это не может быть правильным способом, потому что все говорят, что аутентификация с открытым ключом намного лучше, чем пароли. (а)
  • Я полагаю, я мог бы просто скопировать закрытый ключ со своего ноутбука на мою рабочую станцию. Это не может быть правильным способом, потому что все говорят, что закрытый ключ никогда не должен покидать клиентский компьютер.

Людям вбивают в голову, что одна учетная запись на сервере имеет одно имя пользователя и, конечно, один авторизованный пароль.

Системы с открытым ключом, такие как ssh, лучше, чем система паролей: одна учетная запись на сервере имеет одно имя пользователя и любое количество авторизованных открытых ключей , и все они перечислены в ~/.ssh/authorized_keysфайле.

( подробнее ).

Дэвид Кэри
источник
Простите за повторение .
Дэвид Кэри
0

Будет ли ssh-copy-id делать эту работу за вас: http://linux.die.net/man/1/ssh-copy-id ?

Алекс Уилсон
источник
@ Я хочу сделать SSH с H2 на S1. Я хочу перенести и установить свой закрытый и открытый ключ с H1 на H2. Это сделает это?
Брюс
2
Если вы вошли в S1 или H1 (теперь у вас есть ваш ключ), используя ssh-copy-id, вы сможете перенести свой открытый ключ (не частный) в H2. В целом, лучше ограничить количество машин, на которых установлен ваш закрытый ключ. Старайтесь держать его на нескольких защищенных компьютерах только для предотвращения его потери.
Как скопировать свой закрытый ключ в H2?
Брюс
0

Для переноса ключей SSH с одного компьютера на другой. Просто скопируйте всю папку из ~ / .ssh из H1 (старая машина) в папку ~ / .ssh содержимого новой машины H2.

Теперь попробуйте:

ssh ubuntu @ 13.123.43.26 (ваш S1 ip)

Скорее всего, вы получите предупреждение разрешения, чтобы исправить этот запуск:

chmod 400 ~ / .ssh / id_rsa

Теперь снова:

ssh ubuntu @ 13.123.43.26 (ваш S1 ip)

Теперь все будет хорошо.

Shaurya Uppal
источник