Як перенести свої SSH ключі на іншу машину?


42

У мене є рахунки на двох машинах: H1 і H2. Я створив ключі ssh на H1 і встановив його на S1. Тепер я можу сш на S1 від Н1. Я хочу зробити те ж саме з H2. Як встановити ключі ssh, згенеровані на H1, на H2?


2
Оскільки ssh-copy-idє більш неправомірним (відсутність перезапису існуючих ключів або випадкове копіювання приватного ключа замість відкритого ключа) і менш відомим рішенням, будь ласка, розглянути можливість прийняти одну з цих відповідей як прийняту відповідь.
лютого

Відповіді:


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-idутиліти. У цьому безпечнішому випадку у вас буде два набори ключів; один для входу в H1-S1, а другий для входу в H1-S1. У S1 будуть два авторизовані відкриті ключі. І ви зможете відкликати будь-який з них або обидва (наприклад, коли ваш ноутбук викрадений або власник машини вирішить вимкнути ваш обліковий запис і повторно використовувати всі ваші файли).


8
Копіювання приватного ключа насправді не дуже гарна ідея. Наявність однієї клавіші у кількох місцях 1. робить її більш вразливою, 2. збільшує ризик втрати контролю над усіма локаціями, 3. не дозволяє відключити доступ лише з одного місця. З точки зору безпеки, ви повинні створити нову пару ключів у кожному місці - рішення від Mu Qiao.
пабук

27

Використовуйте ssh-copy-id

СИНОПИС

ssh-copy-id [-i [ident_file]] [користувач @] машина

ОПИС

ssh-copy-id - це скрипт, який використовує ssh для входу у віддалену машину та додає вказаний файл ідентичності до файлу ~ / .ssh / autoriziran_keys цієї машини.


1
@ Я хочу зробити ssh від H2 до S1. Я хочу перенести та встановити свій приватний та відкритий ключ із H1 в H2. Це зробить це?
Брюс

3
@Bruce ні, вам потрібно відновити клавіші на h2 і скористатися цією командою для копіювання ключів. Інший підхід - це надання h1 та h2 спільного домашнього каталогу.
Mu Qiao

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)

Зараз це буде добре працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.