Аутентификация по ключу SSH на нескольких компьютерах

21

Я читал об аутентификации по ключу SSH и настраивал ее на своих 3 компьютерах дома.

У меня есть один главный компьютер, назовите его «A», и два других, назовите их «B» и «C».

Теперь, основываясь на документации, которую я прочитал, я бы запустил ssh-keygen на B и C и поместил открытые ключи на компьютер A, предполагая, что всегда буду использовать SSH на компьютере A, если я на B или C.

Но я думаю, что в примерах документации, которые я прочитал, предполагается, что будет использоваться только один домашний компьютер, скажем, с какого-нибудь другого внешнего компьютера. В моей ситуации, имеет ли смысл просто запустить ssh-keygen на одном компьютере и скопировать файлы на другие? Таким образом, мне нужно сделать резервную копию только одного набора ключей? И когда я захожу на внешний компьютер, мне нужно только настроить его с помощью 1 набора ключей, а не настраивать его на всех трех компьютерах.

Имеет ли это смысл? Любые недостатки или предостережения, чтобы рассмотреть?

Спасибо.

linstar
источник

Ответы:

29

Теоретически вы можете сделать оба пути, но у каждого из них есть свои преимущества и недостатки:

Вы действительно можете создать только 1 ключ, сказать, что он «ваш» (как личность), защитить его где-нибудь и скопировать на любой компьютер, который вы используете. Преимущество заключается в том, что вы можете подключаться к A из любой точки мира, если у вас есть закрытый ключ SSH. Недостатком является то, что, копируя свой закрытый ключ из одного места в другое, каким бы то ни было образом, вы увеличиваете риск его чтения кем-то, кто подслушивает соединение. Хуже того, если компьютер C будет украден, вам придется заново создать новый ключ на всех компьютерах, которые используют этот ключ, и распространять новый.

С другой стороны, использование 1 ключа на пользователя @ компьютер имеет преимущество более «точного контроля» над тем, «что» может подключаться «где». Это самый распространенный способ сделать.

Например, если вы хотите передать компьютер C своему брату / сестре / жене / мужу / другу / собаке или вору (без вашего разрешения), вам просто нужно будет удалить ключ из «авторизованных ключей» А файл.

Поэтому, даже если это означает «больше ключей в Authorized_keys», я предлагаю второй подход.

mveroone
источник
Вы не можете расшифровать поток ssh с помощью личного ключа клиента, и в зависимости от настроек сервера вы также не можете расшифровать его с помощью личного ключа сервера. zurlinux.com/?p=1772
Дэн Мерилат
Это верно, и это не то, что я имел в виду. Я имел в виду, что если ваш личный ключ будет украден, его можно использовать для подключения к компьютеру А из любого другого места. Этого можно избежать, добавив FROM = "<IP>" в начале строки authorized_keys. (см. страницу
руководства
после копирования мне пришлось вставить свой пароль, чтобы использовать его на другом компьютере, я полагаю, что это хоть какая-то защита :)
OZZIE
3

Использование одних и тех же клавиш на всех трех компьютерах определенно выполнимо - я делаю это все время, в основном для удобства.

Квайо правильно указывает, что это увеличивает риск компрометации ваших ключей. Одним из возможных решений было бы разделение компонентов закрытого и открытого ключей. Так:

  • На всех компьютерах есть ваш открытый ключ в файле авторизованных ключах.
  • Вы храните 2 копии своего закрытого ключа; один находится на USB-накопителе у вас на шее (для использования при использовании ssh для доступа к другому компьютеру), а другой - на USB-накопителе в сейфе (на случай, если вы потеряете первую копию).

Если один из ваших компьютеров будет украден или ваш открытый ключ будет взломан - ну, это просто открытый ключ, ну и что.

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

НТН.

ALAN WARD
источник
2
Хорошо, но что такое HTH?
mikeserv
3
HTH = Надежда, которая помогает.
АЛАН УОРД
1
Было бы целесообразно отметить, что, если вы поместите свой закрытый ключ на флэш-диск, было бы разумно сделать его защищенным парольной фразой личным ключом. Недостаток необходимости вводить парольную фразу каждый раз можно устранить с помощью агента (pagent на windows, ssh-agent на linux)
mveroone