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 user@mydebian.com (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).



@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

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

ProxyCommand można również zapisać jako: ProxyCommand ssh debian_server_fqdn -W localhost:%pwięc nie trzeba mieć netcata na serwerze Debian.
Kevin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.