Tunel SSH przez serwer pośrednika - jak połączyć się w jednym kroku (za pomocą pary kluczy)?

9

Moje pytanie jest w zasadzie, jak zamienić moje istniejące dwa kroki w jeden krok.

Mam działający tunel SSH skonfigurowany między dwoma komputerami za pomocą serwera pośrednika, takiego jak ten:

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

Obecnie robię SSH od Kubuntu_laptop do Debian_Server, a następnie z Debian_Server do Kubuntu_desktop. Chciałbym wykonać to jedno polecenie SSH, wydane na moim Kubuntu_laptop w bash, co powoduje, że jestem podłączony do Kubuntu_desktop (shell / bash).

Polecenia, których teraz używam, są następujące. Krok 1:

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

Krok 2:

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

Następnie jestem połączony z kubuntu_desktop przez SSH (z kubuntu_laptop).

Klucze RSA są wymagane dla wszystkich połączeń SSH. Logowanie hasłem jest całkowicie wyłączone. I zauważ, że konta użytkowników komputerów są różne na dwóch komputerach.

Odnośnie połączenia dla tej nogi:

Debian_Server<--nat_fw<--Kubuntu_desktop

Oto, w jaki sposób ustalono:

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

Zauważ, że Kubuntu_desktop łączy się z pośrednikiem jako [email protected] (nie admin @ debian_server). Ale kiedy łączę się z Kubuntu_desktop, łączę się jako użytkownik administracyjny.

Nie mogę zmienić istniejącego portu monitorowania (5234) ani numeru portu zdalnego (- R) (1234 w tym przykładzie). Nie mogę zmienić zabezpieczeń SSH, aby umożliwić logowanie się za pomocą hasła. Nie mogę otworzyć żadnych nowych portów zapory. Nie mogę zmienić kont użytkowników (oprócz laptopa).

MountainX
źródło
Spójrz na to pytanie: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging
@HaukeLaging - wydaje się interesujące, ale nie rozumiem tego. Co to jest „nc”? I na którym komputerze edytowany jest ~ / .ssh / config? Zasadniczo potrzebuję więcej szczegółów niż to pytanie / odpowiedź. Dzięki.
MountainX
To pytanie zostało przeniesione (bez powiadomienia) do Server Fault SE. To bardzo ZŁA forma!
mdpc
dziękuję za opinie wszędzie, ale co jest złego w pytaniu w dwóch różnych miejscach? Czy powstrzymasz mnie też przed pytaniem na ubuntuforums.org lub gdzie indziej?
MountainX
@ HaukeLaging-Jeśli korzystam z ProxyCommand na moim laptopie ~ / .ssh / config, co wpisać w polu Nazwa hosta Kubuntu_Desktop? Nie ma FQDN. To jest odwrotny SSH. Dzięki.
MountainX

Odpowiedzi:

8

Upewnij się, że netcat jest zainstalowany na serwerze Debian i używaj go ProxyCommandw lokalnej konfiguracji SSH ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234
Ignacio Vazquez-Abrams
źródło
Podałem wszystkie moje kroki w innej odpowiedzi na kompletność, ale to wszystko dzięki twojej pomocy. Przyjmuję twoją odpowiedź. Dziękuję Ci!!!
MountainX
6

Dzięki @Ignacio Vazquez-Abrams tutaj są wszystkie kroki:

Upewnij się, że netcat jest zainstalowany na serwerze Debian i użyj ProxyCommand w lokalnej konfiguracji SSH (~ / .ssh / config).

Edytowałem config w następujący sposób:

me@kubuntu_laptop:~/.ssh$ nano config

Zawartość to:

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

Następnie po prostu połącz:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

Połączono z kubuntu_desktop przez SSH w 1 kroku! Doskonały

Aktualizacja:

Dzięki temu jest bardziej elastyczny:

me@kubuntu_laptop:~/.ssh$ nano config

Nowa zawartość to:

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

Następnie po prostu połącz się z mamą:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

I połącz się z tatą:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Oczywiście, Mama i Tata muszą mieć skonfigurowany Krok 0 (z mojego pierwotnego pytania), w którym każdy ma zdefiniowany własny port -R. Przykład dla taty:

Krok 0 (dla taty):

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

Opcjonalny:

DAD=5678
ssh family_desktops -p $DAD
MountainX
źródło
ProxyCommand można również zapisać jako: ProxyCommand ssh debian_server_fqdn -W localhost:%pwięc nie trzeba mieć netcata na serwerze Debian.
Kevin