Несколько открытых ключей для одного пользователя

55

Этот вопрос похож на аутентификацию с открытым ключом SSH - можно ли использовать один открытый ключ для нескольких пользователей? но это наоборот.

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

Могу ли я иметь ссылку на несколько открытых ключей для одного и того же пользователя? Каковы преимущества этого? Кроме того, можно ли установить разные домашние каталоги для разных используемых ключей (все из которых ссылаются на одного и того же пользователя)?

Пожалуйста, дайте мне знать, если мне неясно.

Благодарю.

Рассел
источник

Ответы:

80

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

Сначала создайте две отдельные пары ключей: одну для дома и одну для работы:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

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

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

Затем добавьте содержимое вашего id_rsa.work.pubINTO ~/.ssh/authorized_keysна рабочей машине, и сделать то же самое для домашнего ключа на вашем домашнем компьютере.

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

Обратите внимание, что вы, вероятно, хотите добавить оба ключа к вашему, ssh-agentчтобы вам не приходилось вводить вашу фразу-пароль все время.

Фил Холленбек
источник
Это будет работать, даже если id_rsa.work.pub и id_rsa.home.pub были установлены на одном сервере, верно? Причина в том, что я могу подключаться к серверу с разных компьютеров, поэтому мне интересно, имеет ли смысл иметь разные пары ключей для каждого компьютера, даже если они подключаются к серверу от одного и того же пользователя. Благодарю.
Рассел
2
Абсолютно! На стороне сервера ssh будет проверять все открытые ключи в файле author_keys, пока не найдет совпадение. Таким образом, вы можете без проблем поместить все ключи в один и тот же файл author_keys на сервере.
Фил Холленбек
@PhilHollenback «ssh будет проверять все открытые ключи в файле author_keys до тех пор, пока не найдет совпадение» - вы имеете в виду, что он продолжает отправлять запросы клиенту для каждого открытого ключа, пока клиент не докажет, что может расшифровать один? У вас есть ссылки на это? (искренне заинтересован)
aaa90210
5

Целесообразно, чтобы ключи от нескольких пользователей передавались одному пользователю. Общие причины:

  • резервный
  • мерзавец (например Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • Rsync
  • общий доступ к приложению

Если у вас есть разные домашние каталоги, вы можете изменить их для каждого ключа, предварительно указав ключ user1 environment="HOME=/home/user1"в файле authorized_keys. См man authorized_keys.

Попробуйте, YMMV.

MikeyB
источник