Obtendo lista de conexões ssh abertas por nome

4

Eu tenho um arquivo de configuração no meu diretório .ssh que se parece com isso

Host somehostA
HostName 123.45.67.89
User katsh

Então da minha máquina local, eu posso usar ssh em várias máquinas pelo nome deles no arquivo de configuração, assim

ssh somehostA
ssh somehostB
ssh somehostC
...
etc

É possível obter uma lista de todas as máquinas às quais estou conectado, pelo nome delas?

Eu sei que posso fazer:

 lsof -i tcp -n | grep '\<ssh\>'

e eu vou conseguir algo como

ssh        9871 katsh    3u  IPv4 400199      0t0  TCP 987.654.2.2:47329->987.654.2.2:47329:ssh (ESTABLISHED)
ssh       20554 katsh    3u  IPv4 443965      0t0  TCP 123.456.7.8:41923->123.456.7.8:ssh (ESTABLISHED)

Mas não lista seus nomes, apenas IP

    
por sqram 23.09.2012 / 01:20

3 respostas

5

Se você quer apenas uma lista de nomes, pode fazer algo parecido com isto

sudo netstat -atp | grep 'ESTABLISHED.*ssh ' | awk '{print $5}'| sed 's/:ssh//'
  • obtenha a lista de portas usadas
  • filtra aqueles que são relacionados a ssh. Você precisa de um espaço após o ssh para remover as conexões de entrada para o sshd local.
  • obtenha o nome da lista
  • remova o: ssh

Alguns exemplos de saída, sem o filtro para sshd

host1.lan
192.168.1.71:51053
192.168.1.71:50323
host2.lan
192.168.1.71:50929

que mostra as conexões de saída para host1 e host2, mas também mostra as conexões de entrada para as sessões de putty que eu tenho para o host de demonstração.

Algum exemplo de saída com as conexões sshd locais filtradas

host1.lan
host2.lan
    
por 23.09.2012 / 09:52
5

O comando w parece fazer isso - eu conectei da minha VM de teste, da minha área de trabalho (BLACKBEAUTY), depois fiz a ssh da VM em meu VPS (example.com - não meu domínio real) e a saída é como segue

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
geek     pts/2    blackbeauty      21:31    1:46   0.63s  0.02s ssh example.com
geek     pts/3    blackbeauty      21:32    0.00s  0.57s  0.00s w

Amarre isso com grep ssh e você poderá extrair linhas onde WHAT é ssh para maior clareza.

    
por 23.09.2012 / 06:38
2
$ sudo netstat -atp | grep 'ESTABLISHED.*ssh'
    
por 23.09.2012 / 09:33

Tags