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

17

Предположим, у меня есть удаленная система с именем «remotesystem» и учетная запись пользователя «foouser» в этой системе.

Я знаю, что в моей локальной системе я могу сгенерировать пару ключей SSH как локальный пользователь «foouser», поместив открытый ключ в файл «/home/foouser/.ssh/authorized_keys» в «remotesystem». Когда я использую SSH как «foouser» из моей локальной системы в «remotesystem», SSH использует пару ключей для аутентификации.

Но что, если мое локальное имя пользователя не совпадает с именем пользователя в удаленной системе? То есть, что если я хочу использовать SSH как локальный пользователь «baruser» для «remotesystem»? Очевидно, мне нужно будет сгенерировать пару ключей для «baruser» и добавить открытый ключ в «/home/foouser/.ssh/authorized_keys». Тогда я должен иметь возможность "ssh foouser @ remotesystem", когда локально вошел в систему как "baruser", и SSH будет использовать пару ключей для аутентификации, верно?

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

Мэтт Хёрн
источник
Я включил ведение журнала на стороне сервера, и это оказалось проблемой с разрешениями в домашнем каталоге удаленного пользователя. Проблема решена! Спасибо всем, кто дал ответы.
Мэтт Херн

Ответы:

11

Да, вы можете сделать это, как вы это описали.

baruser @ здесь ~ $ ssh-add -l
4096 10: b3: fd: 29: 08: 86: 24: a6: da: 0a: dd: c6: 1e: b0: 66: 6a id_rsa (RSA)
baruser @ здесь ~ $ ssh foouser @ remotesystem
Мотд сообщение и т. д.
foouser @ remotesystem ~ $
user1686
источник
Спасибо за ответ. Я знал, что не сошел с ума ... :-) Должно быть, что-то не так с конфигурацией SSH-сервера удаленной системы, не позволяющей аутентификации по ключам работать вообще.
Мэтт Херн
4
Если вы выполните команду «ssh -V foouser @ remotesystem», вы можете получить некоторую информацию о том, что происходит не так. Часто это ошибка разрешения на ~ / .ssh.
Пол Томблин
4
не -V (показывает номер версии), но -vvv (макс. многословие)
Левен
10

Это немного в стороне, но .....

Если вы всегда используете одно и то же имя пользователя для удаленного сервера, вам также может быть полезно добавить хост в вашу конфигурацию ssh:

Host remotesystem
    User baruser

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

отметка
источник
5

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

Сёрен Куклау
источник
3

При любых проблемах, связанных с ssh, первое, что нужно сделать, - включить многословие клиента:

ssh user @ machine -vvv

Если это не поможет вам понять, что не так, вам нужно изменить уровень журнала на сервере и перезапустить демон.

LogLevel DEBUG3

Вы должны найти выходные данные отладки в /var/log/auth.log (или там, где когда-либо настроен ssh для входа). Как только вы нашли проблему, не забудьте установить ее так, как вы ее нашли.

Дэвид Пашли
источник
2

Права доступа к каталогам .ssh на обеих машинах будут правильными. Обычно это означает 700 в каталоге .ssh и самое большее 755 в домашнем каталоге. Кроме 600 на все файлы в каталогах .ssh.

Если пользователь в удаленной системе является пользователем root, убедитесь, что root может использовать ssh. (PermitRootLogin в sshd_config) и этот открытый ключ (PubkeyAuthentication) и, если необходимо, RSA (RSAAuthentication) включены.

Александр Кармель-Вейе
источник
Разве RSAAuthentication не является совершенно отдельным методом?
user1686
RSA является одним из алгоритмов открытого ключа, поддерживаемых SSH (наряду с DSA). Это был единственный метод в SSH1.
Александр Кармель-Вейль
2

Если у вас включен SE Linux, вам также необходимо сделать следующее.

Добавьте метку SELinux, чтобы authorized_keyssshd мог получить к ней доступ.

semanage fcontext -a -t sshd_key_t ~foo/.ssh/authorized_keys
restorecon -Rv ~user/.ssh
Проф Мо
источник
0

Похоже, что вы делаете все правильно, но убедитесь, что права на авторизованные ключи указаны правильно. Они должны быть установлены на 600.

Михаил Горсух
источник