SSH túnel através do servidor middleman - como se conectar em uma etapa (usando o par de chaves)?

7

A minha pergunta é basicamente como transformar os meus dois passos existentes num único 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 aquele comando SSH, emitido no meu Kubuntu_laptop no bash, que resulta em estar conectado ao Kubuntu_desktop (shell / bash).

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

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

Etapa 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).

As chaves RSA são necessárias para todas as conexões SSH. O login de senha é desativado a toda a volta. E observe que as contas de usuário do computador são diferentes em dois dos computadores.

Com relação à conexão para esta etapa:

Debian_Server<--nat_fw<--Kubuntu_desktop

Veja como é estabelecido:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected] -p 22

Aviso Kubuntu_desktop se conecta ao intermediário como usuá[email protected] (não admin @ debian_server). Mas quando eu me conecto ao Kubuntu_desktop, eu me conecto como usuário admin.

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 do SSH para permitir logins de senha. Não consigo abrir novas portas de firewall. Não consigo alterar as contas de usuário (exceto no laptop).

    
por MountainX 09.07.2013 / 04:48

2 respostas

8

Certifique-se de que o netcat esteja instalado no servidor Debian e use ProxyCommand em sua configuração local do SSH ( ~/.ssh/config ).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234
    
por 09.07.2013 / 05:25
6

Graças a @Ignacio Vazquez-Abrams aqui estão todos os passos:

Make sure netcat is installed on the Debian server, and use ProxyCommand in your local SSH configuration (~/.ssh/config).

Eu editei a configuração da seguinte forma:

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 1 passo! Perfeito

Atualização:

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 à mãe:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

E conecte-se ao papai:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

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

Passo 0 (para o pai):

autossh -M 6543 -N -f -R 5678:localhost:22 [email protected] -p 22

Opcional:

DAD=5678
ssh family_desktops -p $DAD
    
por 09.07.2013 / 06:13