Eu tenho uma máquina atrás de um firewall. A máquina é minha, configurei o ssh, mas está totalmente protegida por firewall. Minha solução foi usar um shell reverso configurado com base no cron para reconectar se falhar usando o netcat. O comando está bash -i >& /dev/tcp/myhostname.duckdns.org/10000 0>&1
e no meu computador local nc -l 10000
. Até agora isso funcionou, porque posso dizer para ele ingressar na minha VPN privada com um comando. Por algum motivo, esse comando não está funcionando. Então, consigo "fazer login" por meio do shell bash gerado, mas não consigo fazer o ssh de volta ao meu computador porque Pseudo-terminal will not be allocated because stdin is not a terminal.
nunca configurei chaves ssh nesse sistema e ele não me permite fazer login com uma senha .
Então, tenho tentado encontrar uma solução usando o netcat, mas não tive sucesso. O que estou imaginando é algo assim:
[servidor] ---netcat--> [meu-computador:porta1]
de modo que eu possa aproveitar isso para fazer login no servidor sshd e consertar o que precisar ser consertado. Mas não consigo descobrir os comandos netcat que conseguiriam isso. Qualquer ajuda?
Responder1
Descobri uma resposta para o resto da Internet (e para mim). Veja como conseguir o encaminhamento de porta apenas com o netcat (verificado funcionando no OS X El Capitan):
No servidor atrás do firewall (de entrada):
nc localhost 22 >& /dev/tcp/<your-hostname>/<open port on local computer, i.e. 9000> 0>&1
No computador local:
cd /tmp; mkfifo backpipe
nc -l 9000 0<backpipe | nc -l 9001 | tee backpipe
No computador local, terminal separado:
ssh localhost -p 9001