Pergunta: Por que ssh -N -R 2222:localhost:22 <bluehost_user>@<bluehost_ip>
resultar em um erro "Encaminhamento de porta remoto falhou para a porta de escuta"? O objetivo é estabelecer um túnel reverso com o encaminhamento de porta para consistentemente ssh em um host atrás de um roteador NAT que tenha um IP privado dinâmico. Veja a imagem para detalhes.
Já tentou:
- Pesquisou a literatura existente sobre o Google, Stackoverflow, etc. Existem tópicos relativos a esta mensagem de erro, no entanto as resoluções dadas resolvem causas raiz diferentes daquela desta instância particular porque essas resoluções não resolvem o erro neste caso.
- Eu realizei vários diagnósticos para validar as portas necessárias estão abertas. Alguns desses resultados são mostrados na imagem abaixo.
Túnel SSH reverso
Atualizar
Eu estava tentando o seguinte comando para o Passo 2: reduser@redhost:~ ssh greenuser@greenhost -p 2222
Deveria ser: reduser@redhost:~ ssh greenuser@bluehost -p 2222
Você deseja usar as credenciais de usuário verde no IP bluehost porque o host no qual você está efetuando quando você usa a porta 2222 é realmente o host verde.
linux
networking
ssh
port-forwarding
port
ngm_code
fonte
fonte
ssh -N -R <bluehost_ip>:2222:localhost:22
e ssh pareceu levar isso como sintaxe inválida. ssh simplesmente retornouusage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] ...
Respostas:
Eu recebo este aviso exato quando tento usar uma porta que já está sendo tomada no lado remoto.
A saída de
netstat
debluehost
indica que algo já está escutando na porta2222
lá. Não mostra o que é isso.Soluções:
2222
na tuassh
invocação para alguma outra porta que não está em uso embluehost
. Basta torná-lo maior que1023
porque usuários comuns não podem se ligar a portas bem conhecidas ; caso contrário, você receberá o mesmo aviso, independentemente de a porta estar em uso ou não.bluehost
) comsudo lsof -i TCP:2222
; terminar ou reconfigurá-lo para fazer a porta2222
acessível.Editar:
No seu caso, esta parte do
man ssh
parece importante:Isso significa que você deveria ter
GatewayPorts yes
nosshd_config
embluehost
. Lerman 5 sshd_config
aprender mais. Não esqueça de recarregar o serviço depois.fonte
<bluehost_user>@<bluehost_ip>:~$ netstat | grep 2222 tcp 0 0 <bluehost_ip>:2222 htuidc.bgp.ip:2599 SYN_RECV
Port 2222 aberto ou não, como se conectar sem um nome de usuário e senha (note que isso é tcp não ssh)? Eu tenho sshd ouvindo em 2222 como configurado em/etc/ssh/sshd_config
.lsof
:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1034 root 3u IPv4 13344 0t0 TCP *:2222 (LISTEN) sshd 1034 root 4u IPv6 13353 0t0 TCP *:2222 (LISTEN)
sshd
que precisa ser reconfigurado. Ou apenas use outra porta quando vocêssh -R
de outro lugar./etc/ssh/sshd_config
antes de abri-lo em tempo de execução através de uma chamada para ssh no CLI?22
) configurado emsshd_config
são para clientes SSH se conectarem. No seu caso você se conecta a uma dessas portas e pedesshd
abrir adicional portar e encapsulá-lo na sua máquina. Se pudesse ser a mesma porta,sshd
não saberia se os pacotes recebidos são destinados a ele ou ao túnel.Certifique-se de que não haja conexão suspensa na porta 2222 no bluehost. Teste no bluehost
lsof -t -i:2222
se qualquer ID de processo está usando a porta 2222. Além disso, mate esse processo (por exemplo, comkill $(lsof -t -i:2222)
).Isso resolveu o problema para mim. Espero que esta informação seja útil para outra pessoa. :)
fonte