Obtém o nome da chave pública usada para conectar

1

Eu criei um script de shell que faz uma pergunta ao usuário conectado e depois ele fornece o prompt. O shell envia a pergunta para um banco de dados para registro. O problema é que nossos desenvolvedores estão usando uma conta compartilhada, mas cada usuário tem sua chave privada. Existe alguma maneira de ler com o script de shell (bash) qual a chave pública que o usuário conectado tem?

    
por MihaiM 17.08.2011 / 13:33

2 respostas

1

Houve uma violação semelhante em Unix & Linux SE . Com isso em mente, você pode usar a última entrada em seus registros para o IP de conexão:

REMOTE_IP=${SSH_CONNECTION%% *}
grep -B1 ${REMOTE_IP} /var/log/auth.log

Supondo que você esteja usando o debian, os logs do sshd vão para auth.log . Se usando uma distro como RH, eles estariam em secure.log .

    
por 17.08.2011 / 14:25
0

Você poderia elevar o nível de registro sshd para VERBOSE definindo a diretiva LogLevel em /etc/ssh/sshd_config

LogLevel DEBUG

isso faz com que o sshd registre o seguinte para cada conexão

Aug 17 12:16:20 centos sshd[9587]: Connection from 192.168.254.200 port 58107
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9588]: Postponed publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9587]: Accepted publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: pam_unix(sshd:session): session opened for user user by (uid=0)

A variável de ambiente SSH_CONNECTION contém informações sobre a conexão atual

192.168.254.200   58107          192.168.254.89   22 
<sourece IP>      <source port>  <destination IP> <destination port>

Com um pouco de script, deve ser possível juntar os dois.

    
por 17.08.2011 / 13:59