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

Я запутываю себя в некоторой аутентификации на основе ключей ssh.

Допустим, у меня есть:

Host A:
user tom
  .ssh
     tom_private_key
     tom_public_key



Host B:
user shared
   .ssh
     shared_private_key
     shared_public_key

Я хочу SSH от хоста A, как пользователь sharedв Хост Б.

Должен ли я скопировать shared закрытый ключ пользователя к моему каталогу ssh, а затем используйте параметр -I или настройте файл конфигурации SSH, чтобы при подключении ssh к этому хосту в качестве пользователя shared, shared закрытый ключ пользователя используется?

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

3 ответа

Решение

Вам нужно заполнить ~/.ssh/authorized_keys файл на хосте B с открытыми ключами всех пользователей, которым вы хотите иметь доступ к общей учетной записи. Только клиенту нужен личный ключ пользователя. Сервер должен знать только открытые ключи, которым разрешено подключаться к определенной учетной записи.

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

Делаем это на хосте A:

cat ~tom/.ssh/tom_public_key | ssh shared@host-b 'cat >> .ssh/authorized_keys'

Давайте сделаем (снова на хосте A):

ssh -i ~tom/.ssh/tom_private_key shared@host-b


В первой строке вы копируете открытый ключ Тома из Host A (host-a:~tom/.ssh/tom_public_key) к хосту B в файл author_keys для общего пользователя (host-b:~shared/.ssh/authorized_keys), то вы можете подключиться (вторая линия) от А к В без пароля:

Вы можете иметь несколько открытых ключей в файле author_keys (по одному на строку) и использовать один и тот же открытый ключ для нескольких удаленных хостов. Вы также можете использовать один и тот же закрытый ключ на нескольких машинах, но я бы назвал это плохой практикой.

Если вы используете SSH со своего ноутбука на хосте A, вы можете хранить закрытый ключ локально и использовать переадресацию агента (ssh -A host_a).

Другие вопросы по тегам