Как перенести мои ключи SSH на другую машину?
У меня есть аккаунты на двух машинах: H1 и H2. Я создал ключи ssh на H1 и установил его на S1. Теперь я могу SSH к S1 от H1. Я хочу сделать то же самое с H2. Как мне установить ключи ssh, сгенерированные на H1 на H2?
4 ответа
Отредактировано: если у вас есть обе машины, вы можете поделиться своим закрытым ключом. Но это решение небезопасно для случая кражи ноутбука или для машин, которыми вы не владеете.
Вы можете скопировать свои личные ключи с 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-id
Util. В этом более безопасном случае у вас будет два набора ключей; один для входа в систему H1-S1, а второй для входа в систему H2-S1. На S1 будет разрешено два открытых ключа. И вы сможете отозвать любой из них или оба (например, когда у вас украли ноутбук или владелец машины решит отключить вашу учетную запись и повторно использовать все ваши файлы).
Использование ssh-copy-id
СИНТАКСИС
ssh-copy-id [-i [индивидуальный_файл]] [пользователь @] машина
ОПИСАНИЕ
ssh-copy-id - это сценарий, который использует ssh для входа на удаленный компьютер и добавления указанного идентификационного файла в файл ~/.ssh/authorized_keys этого компьютера.
Используйте два закрытых ключа
Настройте 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
файл.
( подробнее).
Все вопросы здесь касаются проблемы копирования личности с одного сервера на другой сервер с использованием
ssh-copy-id
, о чем не идет речь.
Проблема, которую, похоже, задают вопросы, заключается в том, как использовать ту же пару закрытого и открытого ключей, сгенерированную и используемую на персональном компьютере (H1), и ее можно использовать на другом персональном компьютере (H2), чтобы не настраивать новый закрытый-открытый ключ и вручную добавить его на каждый сервер, к которому мы подключались.
Это не рекомендуется из соображений безопасности, о чем подробно говорили другие, однако этого можно добиться с помощью следующих шагов:
- Скопируйте свой личный (например,
~/.ssh/id_rsa
) и публичные (например,~/.ssh/id_rsa.pub
) с машины H1 на машину H2 на месте~/.ssh
(Делайте это только через надежный USB-накопитель, который вы потом отформатируете, не используйте электронную почту или другие интернет-носители). Когда вы выполните следующую команду в H2ls -alt ~/.ssh
вывод будет содержать как минимум следующее:
-rw-r--r-- 1 youUserName youUserName 1240 Nov 3 14:52 id_rsa
-rw-r--r-- 1 youUserName youUserName 412 Nov 3 14:52 id_rsa.pub
- На H2 измените разрешение закрытого ключа на менее доступное (иначе последует следующий шаг) с помощью команды
chmod 600 ~/.ssh/id_rsa
, так что вывод следующей командыls -alt ~/.ssh
будет содержать следующее (обратите внимание на отличие от разрешения выше):
-rw------- 1 youUserName youUserName 1240 Nov 3 14:52 id_rsa
-rw-r--r-- 1 youUserName youUserName 412 Nov 3 14:52 id_rsa.pub
- Последний шаг. на H2 теперь используйте команду
ssh-add ~/.ssh/id_rsa
чтобы пара закрытого и открытого ключей использовалась для идентификации вас с H2 на любой сервер, к которому вы будете подключаться, используя импортированный закрытый открытый ключ.
Теперь любой
ssh
или же
scp
команда, такая как
ssh yourUserName@ip-address
должен пройти успешно, как если бы вы вошли в H1.
Соображения безопасности:
- ПОЖАЛУЙСТА, РАССМОТРИТЕ ДРУГИЕ ПРЕДЛОЖЕНИЯ ДЛЯ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ, AKA СОЗДАЙТЕ НОВУЮ ПАРУ ЧАСТНО-ОБЩЕСТВЕННЫХ КЛЮЧЕЙ
- Единственный случай, в котором я считаю это полезным, - это переход на новую машину навсегда, так что H2 станет вашим основным компьютером, а H1 больше не будет использоваться;
- Если вы по-прежнему используете и H1, и H2, нет веских причин для использования той же пары закрытого и открытого ключей из H2.
Для переноса ключей 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)
Теперь все будет хорошо.
Перенести ключи с помощью
scp
как это:
scp /home/[user]/.ssh/id_rsa* user@ip:/home/[user]/.ssh/
Будет ли ssh-copy-id делать эту работу за вас: http://linux.die.net/man/1/ssh-copy-id?