Existe uma maneira de dizer como um usuário autenticou sua conexão SSH? ou seja, por senha ou por chave pública?

2

Estou bloqueando meu servidor para usar apenas a chave pública. Eu só quero ter certeza antes de ligar o switch que todos os meus usuários já fizeram a transição, e ninguém fica usando senhas para entrar.

    
por Dale Anderson 29.07.2015 / 21:20

2 respostas

3

No Ubuntu:

$ sudo cat /var/log/auth.log|grep ssh|grep Accept

No CentOS / RHEL:

$ sudo cat /var/log/secure|grep ssh|grep Accept

Isso mostrará todas as conexões e como elas foram autenticadas [desde a última rotação do arquivo de log].

Se você apenas quiser ver as conexões de senha, apenas passe por outro grep:

 ... grep ssh|grep Accept|grep password

E para pontos de bônus, uma lista concisa de usuários ainda usando senhas (assumindo a saída dos comandos acima mostra o nome de usuário na 9ª coluna):

... grep password|awk '{print $9}'|sort|uniq
    
por 29.07.2015 / 21:20
1

Abordagem de variável de ambiente

Aqui está uma possibilidade .... se você está feliz em ter PermitUserEnvironment definido como verdadeiro em seu sshd_config , então você pode usar uma combinação de variável de ambiente contra a chave e alguma verificação em /etc/profile para alertar / rejeitar alguém que ainda esteja usando a abordagem de senha.

No seu arquivo $HOME/.ssh/authorized_keys você teria algo ao longo dessas linhas

environment="KEYUSED=yes" ssh-dsa AAA...

Se essa chave for usada, a variável KEYUSED será definida como "yes" quando /etc/profile for executado.

Abordagem de entrada de log

Outra abordagem, verifique / var / log / secure para entradas como essa em que uma chave foi usada

Jul 29 13:58:20 localhost sshd[827]: Accepted publickey for steve from 192.168.124.1 port 50829 ssh2: RSA d3:35:bc:ed:c7:6f:11:27:44:f8:13:66:af:1e:8e:7e

e entradas como essa em que a senha foi usada

Jul 29 14:02:08 localhost sshd[1320]: Accepted password for foo from 127.0.0.1 port 57460 ssh2
    
por 29.07.2015 / 21:29