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

14

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

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

PP.
источник
Немного связано: установка 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
Флорин Андрей