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

Configurar repositório Yum local no Fedora 8
Linux

Configurar repositório Yum local no Fedora 8

Como ativar áudio mono no Windows
Tutoriais

Como ativar áudio mono no Windows

Visual Borderlands para Fallout 4 no PC
Gaming

Visual Borderlands para Fallout 4 no PC

Corrigir consumo de bateria no iOS 16
Celulares

Corrigir consumo de bateria no iOS 16

Corrigir erro diretório não suportado do Windows
Guias Técnicos

Corrigir erro diretório não suportado do Windows

Letras do Apple Music não aparecem no iPhone (iOS 15)
Tutoriais

Letras do Apple Music não aparecem no iPhone (iOS 15)