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 [email protected] (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).

MountainX
fonte
Dê uma olhada nesta pergunta: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging
@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
Ignacio Vazquez-Abrams
fonte
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
MountainX
fonte
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