Guia de tecnologias

Como encontrar conexões SSH ativas no Linux

5 min read Administração Atualizado 10 Oct 2025
Encontrar conexões SSH ativas no Linux
Encontrar conexões SSH ativas no Linux

Servidor com conexões SSH ativas

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

  1. who ou w para identificar sessões ativas e IPs.
  2. ss -tnp | grep IP para localizar sockets relacionados.
  3. ps aux | grep PID para verificar usuário e linha de comando do sshd.
  4. lsof -p PID para listar arquivos/socket abertos pela sessão.
  5. Verifique logs: journalctl -u sshd ou /var/log/auth.log para eventos do usuário.
  6. 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.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE