Contexto
Estou executando o Ubuntu Desktop como minha máquina principal, que chamarei de D. Quero me conectar ao servidor S via ssh, mas o firewall está me bloqueando.
Eu tenho acesso ao servidor S, através de um caminho muito complicado, envolvendo uma máquina virtual Windows e PuTTY . Isso torna o trabalho com este servidor extremamente chato: ambiente completamente diferente, copiar/colar não funciona, não consigo usar corretamente minha área de trabalho enquanto estou conectado a ela (Alt-Tab é quebrado pela máquina virtual) etc.
Verifiquei que posso ssh do servidor S para minha máquina desktop D (o oposto do que preciso).
Eu poderia de alguma forma iniciar o "encaminhamento de porta" ou similar a partir do servidor, para que eu possa ssh para o servidor a partir da minha área de trabalho?
Você pode usar o seguinte comando para configurar um túnel SSH do servidor remoto para sua máquina local:
Quando o túnel estiver configurado, você pode simplesmente ssh para seu servidor remoto usando o seguinte comando:
Observe que você precisa configurar chaves ssh para login automático (sem solicitação de senha). Se você quiser criar o túnel SSH interativamente, poderá remover as opções
-f -N
. Para mais informações,man ssh
.Se você estiver executando uma versão mais recente do OpenSSH (7.3+), poderá usar
ProxyJump
o que junta tudo magicamente:Que no seu
~/.ssh/config
se parece com:ProxyJump
suporta a sintaxe SSH completa, portanto, se você estiverjim
ativadowindows_server
e usar a porta2222
para ssh.remote_server
está no IP192.168.0.110
dowindows_server
então você pode escrever:E ainda é só correr
ssh remote_server
para chegar lá.Se você estiver executando uma versão mais antiga do SSH, use ProxyCommand - isso permite que você diga ao SSH para primeiro executar um comando para estabelecer uma conexão de proxy, antes de executar o comando SSH real.
Isso usa a opção SSH -W , que é uma abreviação para a sintaxe netcat mais misteriosa .
Observe que, como quando você executa,
ssh remote_server
você está agora no,windows_machine
você precisa garantir que você use o IP daremove_server
caixa de salto em vez do IP da sua máquina - eles podem ser os mesmos.Você pode então adicionar esta diretiva ao seu
~/.ssh/config
arquivo:Isso significa que, se
remote_server
for uma máquina diferente da vistawindows_machine
, você pode colocá-la na configuração e ainda usarssh remote_server
.Em vez de tentar contornar as coisas e criar um caminho complicado, você não pode simplesmente solicitar que o SSH da sua área de trabalho para o servidor seja permitido? Se você tiver a necessidade disso e deve estar acessando o servidor, não vejo por que você teria o pedido recusado.