As linhas "canal 2" e "canal 3" são de ssh
. A instância sshd
no servidor remoto está tentando se conectar à porta host.com 27017 para fazer a manutenção de uma conexão de encapsulamento, e está recebendo um erro de "conexão esgotada".
Em outras palavras, sshd
no servidor remoto não pode alcançar o destino do túnel. Como o host remoto também é o host ao qual você supostamente está tunelando, é difícil dizer qual é o problema específico. Pode ser que "host.com" resolva mais de um endereço IP. Você está fazendo uma conexão SSH com um servidor no cluster e, em seguida, um servidor diferente no cluster está sendo escolhido como o destino de encapsulamento. Você pode tentar alterar o destino do túnel para "localhost" em vez de "host.com":
ssh -fN -l root -i path/to/id_rsa -L 9999:localhost:27017 host.com
Atualização:
"- L 9999: localhost: 27017" significa que o cliente ssh
no servidor local atende às conexões na porta 9999. Quando recebe uma conexão, encapsula a conexão com a instância sshd
no servidor remoto . A instância sshd
remota se conecta a partir do localhost: 27017. Então, "localhost" aqui é da perspectiva do servidor remoto.
Com a saída netstat, é um pouco mais claro por que não estava funcionando antes. A parte "127.0.0.1:27017" significa que o Mongodb está especificamente ligado à interface localhost (127.0.0.1) no host remoto. Você não pode contatar essa instância do mongodb diretamente tentando se conectar ao endereço IP regular do host - você só pode contatar essa instância do mongodb através do endereço localhost. E, claro, como é localhost, você só pode entrar em contato se for de um cliente executando no mesmo host.
Assim, a maneira como você está fazendo agora - encapsula uma conexão com o servidor por meio do ssh e, em seguida, conecta-se ao localhost de lá - é a maneira de fazê-lo.