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).