Túnel SSH através do servidor intermediário - como conectar-se em uma única etapa (usando o par de chaves)?


9

Minha pergunta é basicamente como transformar meus dois passos existentes em um passo.

Eu tenho um túnel SSH em funcionamento configurado entre dois computadores usando um servidor intermediário como este:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

O que eu faço atualmente é o SSH do Kubuntu_laptop para o Debian_Server e depois do Debian_Server para o Kubuntu_desktop. Eu gostaria de fazer esse comando SSH, emitido no meu Kubuntu_laptop no bash, que resulta em minha conexão com o Kubuntu_desktop (shell / bash).

Os comandos que estou usando agora são os seguintes. Passo 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

Passo 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

Então eu estou conectado ao kubuntu_desktop via SSH (do kubuntu_laptop).

Chaves RSA são necessárias para todas as conexões SSH. O login com senha está desativado o tempo todo. E observe que as contas de usuário do computador são diferentes em dois dos computadores.

Em relação à conexão para esta perna:

Debian_Server<--nat_fw<--Kubuntu_desktop

Aqui está como é estabelecido:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

Observe que o Kubuntu_desktop se conecta ao intermediário como user@mydebian.com (não admin @ debian_server). Mas quando eu me conecto ao Kubuntu_desktop, eu me conecto como usuário administrador.

Não consigo alterar a porta de monitoramento existente (5234) ou o número da porta remota (- R) (1234 neste exemplo). Não consigo alterar a segurança SSH para permitir logins de senha. Não consigo abrir nenhuma nova porta de firewall. Não consigo alterar as contas de usuário (exceto no laptop).



@HaukeLaging - parece interessante, mas eu não entendo. O que é "nc"? E em qual máquina o ~ / .ssh / config foi editado? Basicamente, preciso de mais detalhes do que a pergunta / resposta fornece. Obrigado.
MountainX

Esta pergunta foi cruzada (sem notificação) para Server Fault SE. Esta é uma forma muito MAU!
MDPC

obrigado pelos votos negativos em todos os lugares, mas o que há de errado em perguntar em dois lugares diferentes? Você também vai me impedir de perguntar no ubuntuforums.org ou em outro lugar?
MountainX

@ HaukeLaging-Se estiver usando ProxyCommand no meu laptop ~ / .ssh / config, o que digito como Nome do host do Kubuntu_Desktop? Não há fqdn. Isso é SSH reverso. Obrigado.
MountainX

Respostas:


8

Verifique se o netcat está instalado no servidor Debian e use ProxyCommandna sua configuração SSH local ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234

Eu dei todos os meus passos em outra resposta para completar, mas foi tudo graças à sua ajuda. Estou aceitando sua resposta. Obrigado!!!
MountainX

6

Graças a @Ignacio Vazquez-Abrams, aqui estão todas as etapas:

Verifique se o netcat está instalado no servidor Debian e use o ProxyCommand na sua configuração SSH local (~ / .ssh / config).

Eu editei a configuração da seguinte maneira:

me@kubuntu_laptop:~/.ssh$ nano config

O conteúdo é:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Em seguida, basta conectar:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

Conectado ao kubuntu_desktop via SSH em uma etapa! Perfeito

Atualizar:

Isso torna mais flexível:

me@kubuntu_laptop:~/.ssh$ nano config

Os novos conteúdos são:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Em seguida, basta conectar-se à mamãe:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

E conecte-se ao papai:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Obviamente, mamãe e papai precisam ter o Passo 0 configurado (da minha pergunta original), onde cada um tem sua própria porta -R definida. Exemplo para o pai:

Etapa 0 (para o pai):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

Opcional:

DAD=5678
ssh family_desktops -p $DAD

O ProxyCommand também pode ser escrito como: ProxyCommand ssh debian_server_fqdn -W localhost:%pportanto, não é necessário ter o netcat no servidor Debian.
Kevin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.