як створити ключ ssh для іншого користувача?


89

Я намагаюся створити ключ ssh для іншого користувача. Я ввійшов як root. Чи можу я просто відредагувати файли, створені ssh-keygen та змінити root на потрібного користувача?


5
Якщо ви генеруєте ключ для користувача, ви також повинні мати захищений спосіб отримання приватного ключа, і він передає користувачеві фразу. Набагато краще, щоб користувач генерував ключ, а потім просто відкрив вам відкритий ключ.
користувач9517

Але хіба це не складно? Ви не дозволяєте ввійти до пароля? Якщо я є лише ключем, і я створив нового користувача, він не може увійти, щоб налаштувати свій ключ.
LVLAaron

Відповіді:


79

Ви можете це зробити ssh-keygen, однак пам’ятайте, що приватний ключ призначений для приватного користувача, тому вам слід бути дуже обережним, щоб зберегти його так само безпечно, як і пароль користувача. Або навіть безпечніше, оскільки користувач, ймовірно, не вимагатиме змінити його під час першого входу.

ssh-keygen -f anythingстворює два файли в поточному каталозі. anything.pubце відкритий ключ, який ви можете додати користувачеві ~/.ssh/authorized_keysна будь-якому сервері призначення.

Інший файл, щойно викликаний, anything- це приватний ключ, і тому його слід безпечно зберігати для користувача. Місце за замовчуванням було б ~username/.ssh/id_rsa(тут названо id_rsa, яке є типовим для клавіш rsa). Пам’ятайте, що .sshкаталог не може читатись або записувати хтось, окрім користувача, а домашній каталог користувача не може бути записаний будь-ким, окрім користувача. Крім того, дозволи повинні бути чіткими і для приватного ключа: Читати / писати тільки для користувача, а каталог .ssh та приватний файл ключів повинні належати користувачеві.

Технічно ви могли зберігати ключ де завгодно. З ssh -i path/to/privatekeyможна вказати , що розташування, при підключенні. Знову-таки, належне право власності та дозволи є критичними, і ssh не працюватиме, якщо ви їх не маєте права.


4
+1 за висловлення, що це приватний (!) Ключ
mailq

51
Ви припускаєте, що користувач - реальна людина. Якщо логін - це інтерактивний користувач, який використовується для виконання службових завдань (наприклад, запуск запущених сценаріїв Maine на віддалених серверах), то так, ви, ймовірно, згенеруєте ключ для цього користувача вручну. Звичайно, це має свої наслідки для безпеки, але це вже інша історія.
Ріліндо

2
@Rilindo ssh -iдо приватного ключа для непривілейованого процесу - це те, як я обробляю більше ніж декілька автоматизованих процесів резервного копіювання rsync. :)
Шадур

9
Мені не подобається така відповідь, яка говорить "ти не повинен цього робити", але не відповідаєш на питання. Хоча це може бути правильним і корисним для контексту оригінального питання, інші люди можуть мати те саме питання в іншій ситуації. "ключі ssh ніколи не повинні генеруватися для іншого користувача": Це правда у простому випадку. Але розглянемо, наприклад, численні ідентичності однієї фізичної людини. У кількох системах може бути кілька облікових записів, не всі вони дозволяють створювати ключі або дозволяють захищати приватні ключі відповідним чином.
Густав

usersабоuser's
Користувач

135

У ключах SSH немає інформації про користувача .

Останнє поле в відкритому ключі - це коментар (і його можна змінити, виконавши наступну команду ssh-keygen -C newcomment).

Не потрібно робити нічого особливого, щоб зробити ключ для іншого користувача, просто поставте його в потрібне місце та встановіть дозволи.


5
Це правильна відповідь.
sebnukem

1
Я лише перевірив і підтвердив, що це не лише коментар, але його можна видалити, а клавіші все ще функціонують. Я завжди думав, що це має значення! Дякуємо за правильну відповідь. Як і в коментарях вище, у мене є причина для створення ключів для інших користувачів, але я не хочу сказати чому, тому немає жодного аргументу.
FreeSoftwareServers

18

Станьте користувачем, використовуючи su та запустіть ключ як цей користувач:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Навіщо вказувати DSA?
Рам

Упс, сила звички. Дозвольте мені оновити.
Ріліндо

4
вам слід використовувати rsa (або, можливо, один із варіантів кривої еліптики). dsa обмежений небезпечними розмірами клавіш. rsa1 - це застарілий формат для ssh1, який ніхто більше не повинен використовувати.
Пітер Грін

Мій joeuserкористувач послуги, тому я не можу ввійти як їх. Як дозволити користувачеві послуги (який просто запускає процеси) мати ключ ssh?
Джонатан

@JonathanLeaders Ви б вказали оболонку для користувача, коли станете цим користувачем. Щось подібне: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: FTP користувач: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: попередження: не вдається змінити каталог на / var / ftp: Немає такого файлу чи каталогу Цей обліковий запис наразі недоступний. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

Як показано тут , ви можете використовувати chmod для зміни дозволу на читання папки користувача, до якого потрібно додати ключ SSH.

vim /home/username/.ssh/authorized_keys

Потім просто вставте ключ до нового рядка внизу цього файлу


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