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.
Tenho acesso ao servidor S, através de um caminho muito complicado, envolvendo uma máquina virtual Windows eMassa. Isso torna o trabalho com este servidor extremamente irritante: ambiente completamente diferente, copiar/colar não funciona, não consigo usar minha área de trabalho corretamente enquanto estou conectado a ela (Alt-Tab está quebrado pela máquina virtual) etc.
Verifiquei que posso fazer 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 algo semelhante a partir do servidor, para que eu possa fazer ssh para o servidor a partir da minha área de trabalho?
Responder1
Você pode usar o seguinte comando para configurar um túnel SSH do servidor remoto para sua máquina local:
$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
Quando o túnel estiver configurado, você pode simplesmente usar ssh para seu servidor remoto usando o seguinte comando:
$ ssh -p 1234 user@localhost
Observe que você precisa configurar chaves ssh para login automático (sem solicitação de senha). Se quiser criar o túnel SSH de forma interativa, você pode remover as opções -f -N
. Para mais informações, man ssh
.
Responder2
Se você estiver executando uma versão mais recente do OpenSSH (7.3+), poderá usarProxyJump
que cozinha tudo junto magicamente:
ssh -J windows_machine remote_server
Qual na sua ~/.ssh/config
aparência é:
Host remote_server
HostName remote_server
ProxyJump windows_machine
User myname
ProxyJump
suporta sintaxe SSH completa, portanto, se você estiver jim
ativado windows_server
e usar a porta 2222
para ssh. remote_server
está no IP 192.168.0.110
a partir do windows_server
qual você pode escrever:
Host remote_server
HostName 192.168.0.110
ProxyJump jim@windows_machine:2222
User myname
Eaindaapenas corra ssh remote_server
para chegar lá.
Se você estiver executando uma versão mais antiga do SSH, useComando Proxy- isso permite que você diga ao SSH para primeiro executar um comando para estabelecer uma conexão proxy, antes de executar o comando SSH real.
ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
Isso usa o SSH-Copção, que é uma abreviação para o mais misteriosoSintaxe do netcat.
Observe que, como quando você executa ssh remote_server
você está agora no windows_machine
você precisa garantir que você usa o IP doremove_server
da caixa de saltoem vez do IP da sua máquina - estes podem ser os mesmos.
Você pode então adicionar esta diretiva ao seu ~/.ssh/config
arquivo:
Host remote_server
HostName remote_server
User myname
ProxyCommand ssh -W %h:%p windows_machine
Isto significa que seremote_server
éuma máquina diferente como vista windows_machine
então você pode colocar isso na configuração e ainda assim usar ssh remote_server
.
Responder3
Em vez de tentar contornar as coisas e criar um caminho complicado, você não pode simplesmente pedir que o SSH do seu desktop para o servidor seja permitido? Se você precisar disso e deveria estar acessando o servidor, não consigo entender por que você teria a solicitação recusada.