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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.