Hvad er omvendt SSH-tunneling? (og hvordan man bruger det)

Har du brug for at SSH til en uopnåelig Linux-computer? Få den til at ringe til dig, og grav derefter den forbindelse ned for at få din egen fjern-SSH-session. Vi viser dig hvordan.

Når du vil bruge omvendt SSH-tunneling

Nogle gange kan fjerncomputere være svære at nå. Det websted, de er placeret på, kan have stramme firewall-regler på plads, eller måske har den lokale administrator oprettet kompleks Netværksadresseoversættelse regler. Hvordan når man sådan en computer, hvis man skal oprette forbindelse til den?

Lad os etablere nogle etiketter. Din computer er den lokale computer, fordi den er i nærheden af ​​dig. Computeren, du vil oprette forbindelse til, er fjerncomputeren, fordi den er et andet sted end dig.

For at skelne mellem de lokale og eksterne computere, der bruges i denne artikel, kaldes fjerncomputeren “wdzwdz” og kører Ubuntu Linux (med lilla terminalvinduer). Den lokale computer hedder “Sulaco” og kører Manjaro Linux (med gule terminalvinduer).

Normalt ville du fyre op en SSH forbindelse fra den lokale computer og opret forbindelse til fjerncomputeren. Det er ikke en mulighed i det netværksscenarie, vi beskriver. Det er virkelig lige meget, hvad det specifikke netværksproblem er – dette er nyttigt, når du ikke kan SSH direkte til en fjerncomputer.

Men hvis netværkskonfigurationen på din side er ligetil, kan fjerncomputeren oprette forbindelse til dig. Det alene er dog ikke tilstrækkeligt til dine behov, fordi det ikke giver dig en fungerende kommandolinjesession på fjerncomputeren. Men det er en begyndelse. Du har en etableret forbindelse mellem de to computere.

  Start projekter ved at skabe en disposition og organisere dit indhold

Svaret ligger i omvendt SSH-tunneling.

Hvad er omvendt SSH-tunneling?

Omvendt SSH-tunneling giver dig mulighed for at bruge den etablerede forbindelse til at oprette en ny forbindelse fra din lokale computer tilbage til fjerncomputeren.

Fordi den oprindelige forbindelse kom fra fjerncomputeren til dig, er det at bruge den til at gå i den anden retning ved at bruge den “omvendt”. Og fordi SSH er sikker, sætter du en sikker forbindelse i en eksisterende sikker forbindelse. Det betyder, at din forbindelse til fjerncomputeren fungerer som en privat tunnel inde i den oprindelige forbindelse.

Og så når vi frem til navnet “omvendt SSH-tunneling.”

Hvordan virker det?

Omvendt SSH-tunneling er afhængig af, at fjerncomputeren bruger den etablerede forbindelse til at lytte efter nye forbindelsesanmodninger fra den lokale computer.

Fjerncomputeren lytter på en netværksport på den lokale computer. Hvis den registrerer en SSH-anmodning til den port, videresender den forbindelsesanmodningen tilbage til sig selv, ned ad den etablerede forbindelse. Dette giver en ny forbindelse fra den lokale computer til den eksterne computer.

Det er nemmere at sætte op, end det er at beskrive.

Brug af SSH Reverse Tunneling

SSH vil allerede være installeret på din Linux-computer, men du skal muligvis starte SSH-dæmonen (sshd), hvis den lokale computer aldrig har accepteret SSH-forbindelser før.

sudo systemctl start sshd

For at få SSH-dæmonen til at starte hver gang du genstarter din computer, skal du bruge denne kommando:

sudo systemctl enable sshd

På fjerncomputeren bruger vi følgende kommando.

  Sådan tager du et billede på en Chromebook

Indstillingen -R (omvendt) fortæller ssh, at nye SSH-sessioner skal oprettes på fjerncomputeren.
“43022:localhost:22” fortæller ssh, at forbindelsesanmodninger til port 43022 på den lokale computer skal videresendes til port 22 på fjerncomputeren. Port 43022 blev valgt, fordi det er det opført som værende ikke-allokeret. Det er ikke et specielt nummer.
[email protected] er den brugerkonto, som fjerncomputeren skal oprette forbindelse til på den lokale computer.

ssh -R 43022:localhost:22 [email protected]

Du får muligvis en advarsel om aldrig at have oprettet forbindelse til den lokale computer før. Eller du ser muligvis en advarsel, når forbindelsesdetaljerne føjes til listen over anerkendte SSH-værter. Hvad du ser – hvis noget – afhænger af, om der nogensinde er oprettet forbindelser fra fjerncomputeren til den lokale computer.

Du vil blive bedt om adgangskoden til den konto, du bruger til at oprette forbindelse til den lokale computer.

Bemærk, at når forbindelsen er oprettet, ændres kommandoprompten fra [email protected] til [email protected]

Vi er nu forbundet til den lokale computer fra fjerncomputeren. Det betyder, at vi kan udstede kommandoer til det. Lad os bruge who-kommandoen til at se logins på den lokale computer.

who

Vi kan se, at personen med brugerkontoen kaldet dave har logget ind på den lokale computer, og fjerncomputeren har oprettet forbindelse (ved hjælp af de samme brugeroplysninger) fra IP-adressen 192.168.4.25.

Tilslutning til fjerncomputeren

Fordi forbindelsen fra fjerncomputeren er vellykket, og den lytter efter forbindelser, kan vi prøve at oprette forbindelse til fjerncomputeren fra den lokale.

Fjerncomputeren lytter på port 43022 på den lokale computer. Så – lidt mod intuitivt – for at oprette en forbindelse til den eksterne computer, beder vi ssh om at oprette en forbindelse til den lokale computer på port 43022. Denne forbindelsesanmodning videresendes til den eksterne computer.

ssh localhost -p 43022

Vi bliver bedt om adgangskoden til brugerkontoen og forbindes derefter til fjerncomputeren fra den lokale computer. Vores Manjaro-computer siger glad: “Velkommen til Ubuntu 18.04.2 LTS”.

  Sådan kontrollerer du, hvornår et billede vises i PowerPoint

Bemærk, at kommandoprompten er ændret fra [email protected] til [email protected] Vi har nået vores mål om at lave en SSH-forbindelse til vores svært tilgængelige fjerncomputer.

Brug af SSH med nøgler

For at gøre det mere bekvemt at oprette forbindelse fra fjerncomputeren til den lokale computer, kan vi konfigurere SSH-nøgler.

Skriv denne kommando på fjerncomputeren:

ssh-keygen

Du vil blive bedt om en adgangssætning. Du kan trykke på Enter for at ignorere adgangssætningsspørgsmålene, men dette anbefales ikke. Det ville betyde, at enhver på fjerncomputeren kunne oprette en SSH-forbindelse til din lokale computer uden at blive udfordret for en adgangskode.

Tre eller fire ord adskilt af symboler vil give en robust adgangssætning.

Dine SSH-nøgler vil blive genereret.

Vi skal overføre den offentlige nøgle til den lokale computer. Brug denne kommando:

ssh-copy-id [email protected]

Du vil blive bedt om adgangskoden til den brugerkonto, du logger på, i dette tilfælde, [email protected]

Første gang du laver en forbindelsesanmodning fra fjerncomputeren til den lokale computer, skal du angive adgangssætningen. Du behøver ikke indtaste det igen for fremtidige forbindelsesanmodninger, så længe det terminalvindue forbliver åbent.

Ikke alle tunneler er skræmmende

Nogle tunneler kan være mørke og snoede, men omvendt SSH-tunneling er ikke for svært at navigere, hvis du kan holde forholdet mellem fjerncomputeren og den lokale computer lige i dit hoved. Vend det derefter om.