Como encontrar conexões SSH ativas no Linux

Se você é administrador de sistemas Linux e gerencia servidores, frequentemente precisa saber quantas conexões SSH estão ativas e de onde elas vêm. Existem vários comandos e ferramentas no Linux para encontrar conexões SSH ativas. Este artigo mostra métodos práticos, quando usá-los, limitações e um pequeno playbook para investigação.
Pré-requisitos
- Um servidor com sistema operacional Linux.
- Acesso root ou privilégios suficientes para executar comandos de administração (sudo).
Métodos principais para encontrar conexões SSH ativas
A seguir estão os comandos mais usados. Cada subseção explica o que o comando mostra, quando usá-lo e um exemplo.
who
who exibe uma lista de usuários atualmente conectados ao servidor. É rápido e direto — bom para auditoria rápida.
Executar:
who
Exemplo de saída:
root pts/0 2020-05-01 02:37 (27.61.161.61)
root pts/1 2020-05-01 02:39 (45.58.38.21)
O who mostra o terminal, a hora de login e o IP de origem em parênteses.
w
w fornece mais contexto: tempo de atividade, usuários conectados, tempo ocioso e processo em execução. Útil quando precisa ver o que cada sessão está fazendo.
Executar:
w
Exemplo de saída:
02:40:07 up 1 day, 18:35, 2 users, load average: 0.02, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 27.61.161.61 02:37 1.00s 0.04s 0.01s ssh [email protected]
root pts/1 45.58.38.21 02:39 1.00s 0.02s 0.00s w
Use w quando quiser contexto operacional imediato (o que está sendo executado naquela sessão).
ps
ps mostra processos e permite localizar processos sshd por PID, parentage e mais. Útil para encontrar PID de sessões, matar processos problemáticos ou auditar a linha de comando do processo.
Executar:
ps auxwww | grep sshd: | grep -v grep
Exemplo de saída:
root 609 0.0 0.1 12160 7268 ? Ss Apr29 0:01 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 35532 0.0 0.2 13864 8796 ? Ss 02:37 0:00 sshd: root@pts/0
root 35669 0.0 0.2 13860 8916 ? Ss 02:38 0:00 sshd: root@pts/1
Com o PID em mãos, você pode investigar mais (por exemplo, lsof -p PID) ou encerrar o processo com kill.
netstat
netstat lista conexões TCP/UDP. Use-o para ver sockets ESTABLISHED e portas remotas/locais. Em distribuições modernas pode não estar instalado por padrão.
Executar:
netstat -tnpa | grep 'ESTABLISHED.*sshd'
Exemplo de saída:
tcp 0 88 45.58.38.21:22 27.61.161.61:8363 ESTABLISHED 35532/sshd: root@pt
tcp 0 0 45.58.38.21:22 45.58.38.21:51166 ESTABLISHED 35669/sshd: root@pt
Se netstat não estiver disponível, instale o pacote net-tools ou use ss (abaixo).
last
last lê /var/log/wtmp e mostra logins e logouts. Usando um filtro você encontra sessões que ainda estão ativas (still logged in).
Executar:
last -a | grep -i still
Exemplo de saída:
root pts/1 Fri May 1 02:39 still logged in 45.58.38.21
root pts/0 Fri May 1 02:37 still logged in 27.61.161.61
reboot system boot Wed Apr 29 08:04 still running 5.4.0-26-generic
last é útil para auditoria histórica e para correlacionar eventos de login com entradas de log.
ss
ss é o substituto moderno do netstat, mais rápido e com mais filtros. Mostra sockets e estados.
Executar:
ss | grep -i ssh
Exemplo de saída:
tcp ESTAB 0 0 45.58.38.21:51166 45.58.38.21:ssh
tcp ESTAB 0 56 45.58.38.21:ssh 27.61.161.61:8363
tcp ESTAB 0 0 45.58.38.21:ssh 45.58.38.21:51166
ss é ideal para varredura rápida de sockets e integrar em scripts de monitoramento.
Quando cada método falha — limitações e contraexemplos
- who/w: podem não mostrar sessões sem TTY (ex.: tunelamentos pelo ssh -N) ou conexões que não criam um terminal.
- ps: mostra processos locais; conexões podem ser proxied (proxy/jumphost) e o FROM real pode não aparecer.
- netstat/ss: mostram sockets, mas não o nome do usuário dentro da sessão; para isso combine com ps ou last.
- last: depende de /var/log/wtmp; se o arquivo for rotacionado, truncado ou corrompido, os dados históricos ficam incompletos.
Importante: combine ferramentas para obter visão completa. Por exemplo, use ss para achar socket e ps/lsof para mapear PID e usuário.
Playbook rápido para investigar uma conexão suspeita
- who ou w para identificar sessões ativas e IPs.
- ss -tnp | grep IP para localizar sockets relacionados.
- ps aux | grep PID para verificar usuário e linha de comando do sshd.
- lsof -p PID para listar arquivos/socket abertos pela sessão.
- Verifique logs: journalctl -u sshd ou /var/log/auth.log para eventos do usuário.
- Se necessário, notificações para a equipe e, como último recurso, encerre a sessão com kill -9 PID.
Notas importantes:
- Sempre documente a razão antes de terminar uma sessão de usuário (auditoria).
- Ao desconectar, notifique o usuário e crie um registro no sistema de ticket.
Checklist por função
- Administrador de produção:
- Verificar w/who antes de alterações de manutenção.
- Confirmar PIDs com ps e registrar em ticket.
- Analista de segurança:
- Correlacionar IPs com logs de firewall e IDS.
- Verificar frequência e padrão de logins por hora/país.
- Suporte operacional:
- Usar last para validar sessões que relatam problema de login.
Cheatsheet de comandos (resumo rápido)
- who — lista usuários com TTY
- w — lista com o que cada usuário está fazendo
- ps auxwww | grep sshd — encontra PIDs sshd
- ss | grep ssh — mostra sockets SSH
- netstat -tnpa | grep ‘ESTABLISHED.*sshd’ — alternativa com netstat
- last -a | grep -i still — quem ainda está logado
Segurança e privacidade
- Endereços IP são dados pessoais em alguns países. Trate logs com cuidado e siga políticas de retenção e privacidade.
- Antes de compartilhar saídas de comandos, remova ou anonimize IPs e nomes de usuário quando necessário.
Glossário (1 linha cada)
- SSH: protocolo seguro de shell remoto.
- sshd: daemon/serviço do servidor SSH.
- TTY: terminal associado a uma sessão de usuário.
- PID: identificador do processo no sistema operacional.
Critérios de aceitação para uma verificação bem-sucedida
- Você conseguiu listar todas as sessões SSH com who/w ou ss.
- Você correlacionou cada socket a um PID e usuário (ps + lsof).
- Você documentou ações tomadas e atualizou o ticket correspondente.
Resumo
Neste guia você aprendeu seis formas de encontrar conexões SSH ativas (who, w, ps, netstat, last, ss), suas vantagens e limitações e recebeu um playbook de investigação e um checklist por função. Combine ferramentas para obter resultados confiáveis e siga práticas de segurança e auditoria antes de finalizar sessões.
Principais recomendações: use w/ss para inspeção rápida, ps/lsof para detalhes por PID e last para auditoria histórica.
Materiais semelhantes
Configurar repositório Yum local no Fedora 8

Como ativar áudio mono no Windows

Visual Borderlands para Fallout 4 no PC

Corrigir consumo de bateria no iOS 16

Corrigir erro diretório não suportado do Windows
