O Bash pode me dizer qual chave pública SSH foi usada para autenticação?

14

Digamos que eu queira rastrear meus rootusuários. Cada um deles possui uma chave privada exclusiva e suas chaves públicas foram armazenadas /root/.ssh/authorized_keys.

Dado que cada usuário efetua login com sua chave exclusiva, como posso saber em uma sessão do BASH qual chave foi usada para autenticar? Tentei examinar as variáveis ​​de ambiente ao efetuar login, mas não consigo ver nada que correlacione minha sessão com minha chave pública.

PP.
fonte
Ligeiramente relacionado: a configuração do LogLevel VERBOSE em seu (openssh) sshd_config registrará a impressão digital da chave usada para efetuar o login.
Andol

Respostas:

21

Você pode adicionar o nome de usuário à chave pública no ~/.ssh/authorized_keysservidor e exportá-lo como um valor de ambiente:

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

Isso definirá a variável de ambiente REALUSER, que estará disponível para uso no bash. Isso funcionará apenas se PermitUserEnvironmentfor definido como true nosshd_config

Jenny D
fonte
Whoah .. realmente? Legal! Você quer dizer ~/.ssh/authorized_keys? Eu nunca soube disso.
PP.
5
Sim, é isso. Você pode fazer muitas coisas interessantes por lá - man sshdirá mais sobre esse assunto AUTHORIZED_KEYS FILE FORMAT.
Jenny D
4
Pode depender da versão, mas eu tive que usar man sshdpara encontrar a AUTHORIZED_KEYS FILE FORMATseção.
Matthew Crumley
2
Esteja ciente de que ativar PermitUserEnvironment tem algumas implicações de segurança. Leia man sshd
Florin Andrei