Может ли Bash сказать мне, какой открытый ключ SSH использовался для аутентификации?


14

Допустим, я хочу отслеживать своих rootпользователей. Каждый из них имеет уникальный закрытый ключ, а их открытые ключи хранятся в /root/.ssh/authorized_keys.

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


Немного связано: установка LogLevel VERBOSE в вашем (openssh) sshd_config зарегистрирует отпечаток ключа, использованного для входа в систему.
Андроль

Ответы:


21

Вы можете добавить имя пользователя в открытый ключ ~/.ssh/authorized_keysна сервере и экспортировать его в качестве значения среды:

environment="REALUSER=realusername" ssh-dsa AAA...

Это установит переменную окружения REALUSER, которая затем будет доступна для использования в bash. Это будет работать только если PermitUserEnvironmentустановлено значение true вsshd_config


Ух ты ... правда? Здорово! Вы имеете в виду ~/.ssh/authorized_keys? Я никогда не знал об этом.
пп.

5
Да, вот и все. Там можно сделать много интересного - man sshрасскажу больше под заголовком AUTHORIZED_KEYS FILE FORMAT.
Дженни Д

4
Это может зависеть от версии, но мне пришлось использовать, man sshdчтобы найти AUTHORIZED_KEYS FILE FORMATраздел.
Мэтью Крамли

2
Имейте в виду, что включение PermitUserEnvironment имеет некоторые последствия для безопасности. Читайте man sshd
Флорин Андрей
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.