Назад | Перейти на главную страницу

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

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

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

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

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

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

baruser@here ~$ ssh-add -l
4096 10:b3:fd:29:08:86:24:a6:da:0a:dd:c6:1e:b0:66:6a id_rsa (RSA)
baruser@here ~$ ssh foouser@remotesystem
сообщение motd и т. д.
foouser@remotesystem ~$

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

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

Host remotesystem
    User baruser

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

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

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

ssh user@machine -vvv

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

LogLevel DEBUG3

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

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

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

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

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

semanage fcontext -a -t sshd_key_t ~foo/.ssh/authorized_keys
restorecon -Rv ~user/.ssh

Похоже, вы все делаете правильно, но убедитесь, что права на authorized_keys верны. Их следует установить на 600.