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
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).
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
Tags ssh bash debian ubuntu ssh-tunneling