who
ou w
; who -a
para informações adicionais.
Esses comandos mostram apenas todas as sessões de login em um dispositivo terminal. Uma sessão SSH estará em um escravo pseudo-terminal ( pts
) como mostrado na coluna TTY
, mas nem todas as conexões pts são sessões SSH. Por exemplo, programas que criam um dispositivo pseudo-terminal, como xterm
ou screen
, serão mostrados como pts
. Veja Diferença entre pts e tty para uma melhor descrição dos diferentes valores encontrados em a coluna TTY
. Além disso, essa abordagem não mostrará ninguém que tenha efetuado login em uma sessão SFTP, já que as sessões SFTP não são sessões de login do shell.
Eu não sei de nenhuma maneira de mostrar explicitamente todas as sessões do SSH. Você pode inferir essas informações lendo as informações de login de utmp
/ wtmp
por meio de uma ferramenta como last
, w
ou who
como acabei de descrever ou usando ferramentas de rede como @sebelk descritas em sua resposta para encontrar conexões tcp abertas na porta 22 (ou onde quer que seu (s) daemon (s) SSH esteja (m) escutando).
Uma terceira abordagem que você pode fazer é analisar a saída do log do daemon SSH. Dependendo da sua distribuição de SO, distribuição SSH, configuração e assim por diante, sua saída de log pode estar em vários lugares diferentes. Em uma caixa do RHEL 6, encontrei os logs em /var/log/sshd.log
. Em uma caixa do RHEL 7 e também em uma caixa do Arch Linux, precisei usar journalctl -u sshd
para exibir os logs. Alguns sistemas podem gerar logs SSH para o syslog. Seus registros podem estar nesses lugares ou em outro lugar. Veja uma amostra do que você pode ver:
[myhost ~]% cat /var/log/sshd.log | grep hendrenj | grep session
May 1 15:57:11 myhost sshd[34427]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 1 16:16:13 myhost sshd[34427]: pam_unix(sshd:session): session closed for user hendrenj
May 5 14:27:09 myhost sshd[43553]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 5 18:23:41 myhost sshd[43553]: pam_unix(sshd:session): session closed for user hendrenj
Os registros mostram quando as sessões abrem e fecham, a quem a sessão pertence, onde o usuário está se conectando e muito mais. No entanto, você terá que fazer um lote de análise se quiser obter isso de um simples log de eventos legível por humanos para uma lista de sessões atualmente ativas, e ainda provavelmente ganhou Não é uma lista precisa quando você terminar de analisar, uma vez que os logs não contêm informações suficientes para determinar quais sessões ainda estão ativas - você está apenas tentando adivinhar. A única vantagem que você obtém usando esses logs é que as informações vêm diretamente do SSHD, em vez de uma fonte de segunda mão, como os outros métodos.
Eu recomendo usar apenas w
. Na maior parte do tempo, você obterá as informações desejadas.