Como você verifica se um túnel ssh do INCOMING ainda está ativo e a quem ele pertence?

3

Veja a edição abaixo para a versão curta

Estou com problemas para exibir o status dos túneis ssh em nosso servidor.

Aqui estão algumas informações relevantes:

user001 = remote client's username
123.123.123.123 = ssh server's ip
111.222.111.222 = database server

Agora estou testando com apenas um cliente remoto conectado. Eu posso ver os dois túneis reversos solicitados (saída filtrada):

lsof -i -P
sshd    14652 user001    8u  IPv4 1171285      0t0  TCP localhost:2000 (LISTEN)
sshd    14652 user001    9u  IPv4 1171287      0t0  TCP my.domain.com:2001 (LISTEN)

netstat -atpe --numeric-ports
tcp        0      0 127.0.0.1:2000          0.0.0.0:*               LISTEN      user001    1171285     14652/sshd: user001
tcp        0      0 123.123.123.123:2001     0.0.0.0:*               LISTEN      user001    1171287     14652/sshd: user001

É muito claro aqui que eles foram iniciados pelo user001, mas o túnel regular (-L) que ele cria não é listado por lsof . A única informação que posso encontrar relacionada a ele é exibida por netsat e nem parece ser o próprio túnel, mas sim a conexão de rede entre o servidor ssh e o servidor de banco de dados:

tcp        0      0 123.123.123.123:60299    111.222.111.222:52849     TIME_WAIT   root       0           -               
tcp        0      0 123.123.123.123:60300    111.222.111.222:52849     TIME_WAIT   root       0           -               

O que é um pita, porque ele não está apenas mostrando sob o usuário root, ele só mostra IPs locais, então não tenho como saber quem é o túnel / conexão. Quando todos os 50 ou mais clientes remotos estiverem conectados, será uma confusão total para solucionar problemas.

As perguntas:

Existe uma maneira melhor de exibir túneis ssh? Melhor comando? Algum programa?

Existe alguma maneira de ter este show sob o usuário do cliente remoto ou pelo menos mostrar o ip do cliente remoto?

Por que lsof não está exibindo?

Obrigado.

----- EDITAR -----

Ok, se você quiser riscar tudo isso, aqui está uma pergunta simplificada:

O SSH CLIENT conecta-se ao SSH SERVER e solicita um túnel (usando -L) de sua porta local 100 para a porta 5000 em um Database Server na mesma rede que o SSH SERVER .

Então, temos um túnel assim:

CLIENTE: 100 ----- > SERVIDOR SSH ----- > DBSERVER: 5000

Como você verifica se este túnel está ativo quando você está logado no SSH SERVER ?

Eu não quero ver se o SSH SERVER está se comunicando com o Servidor de banco de dados Eu quero ver se o túnel iniciado por SSH CLIENT ainda está ativo.

As informações exibidas pelo netstat mostram apenas que o servidor tem uma conexão ativa de uma porta aleatória para a porta 5000 no servidor ssh, ele não diz por que essa conexão está ativa (não há um pid vinculado a ela) e mostra root como o proprietário (que é completamente inútil).

    
por TCZ8 10.09.2014 / 17:25

1 resposta

1

Tenho certeza de que as duas conexões em TIME_WAIT são da extremidade servidor da conexão e, se os servidores estiverem sendo executados como raiz, isso faz sentido.

Observe que a opção -L não cria o túnel real, apenas a funcionalidade do túnel. O ato de conectar ao IP / Porta de entrada é o que faz com que o SSH realmente crie o túnel para o IP / Porta de destino; você verá a conexão em lsof / netstat / etc em um estado ESTABLISHED, até que alguém feche a conexão.

Abra outra janela de terminal e apenas digite "telnet IP port" para ativar o túnel (este deve ser o IP / port na extremidade dianteira do túnel que você especificar com -L), não é necessário digitar nada. Em seguida, vá até a janela do servidor e execute seus comandos lsof / netstat para ver a conexão ESTABLISHED no ato.

Espero que isso ajude ... me avise!

    
por 10.09.2014 / 18:30