Como encontrar outro fim de conexão ssh

1

Estou conectando via SSH do host A ao host B.

Existe uma maneira de encontrar a fonte de conexão e reconectar-se de B a A (por exemplo, para fazer scp de B para A)?

    
por ts01 08.06.2015 / 17:32

3 respostas

2

Se você quiser apenas encontrar o host do qual você se conectou, use w :

$ who -m --ips
terdon   pts/4        2015-06-08 20:02 123.456.78.9

Para obter apenas o IP:

$ who -m --ips | awk '{print $NF}'
123.456.78.9

Então, para scp desse host, você poderia fazer:

scp user@$(who -m --ips | awk '{print $NF}'):/remote/path /target/path
    
por terdon 08.06.2015 / 19:16
0

Este comando mostra conexões SSH estabelecidas e o usuário de destino:

LANG=C netstat  | grep ESTABLISHED | awk '/:22 |:ssh/ {sub(/:.*/,"", ); system("who | grep \"""\"") }'

O usuário que estabeleceu a conexão não pode ser determinado.

E apenas o host:

LANG=C netstat  | grep ESTABLISHED | awk '/:22 |:ssh/ {sub(/:.*/,"", ); system("who | grep \"""\"") }' | awk '{gsub(/\(|\)/, "", ); print }'
    
por A.B. 08.06.2015 / 18:15
0

Para obter o endereço IP do host do qual você está conectado, use grep na saída de ss :

ss -nt | grep -Po '^ESTAB.*?:22\s+\K[^:]+(?=:\d+)'

Por exemplo:

$ ss -nt | grep -Po '^ESTAB.*?:22\s+\K[^:]+(?=:\d+)'
192.168.11.225
  • ss significa estatísticas de soquete, ss -nt mostrará os soquetes TCP com endereços numéricos como terminais

  • grep -Po obterá apenas a parte correspondente da linha usando PCRE (expressões regulares compatíveis com Perl)

  • ^ESTAB.*?:22\s+ corresponderá a ESTAB no início, seguido da porta 22 com qualquer coisa entre, \K descartará a correspondência

  • [^:] corresponde ao endereço IP desejado

  • O padrão de antecipação de largura zero zero (?=:\d+) garante que o endereço IP seja seguido por :<port>

por heemayl 08.06.2015 / 20:29