Hva er omvendt SSH-tunneling? (og hvordan du bruker det)

Trenger du SSH til en uoppnåelig Linux-datamaskin? Få den til å ringe deg, og grav ned den forbindelsen for å få din egen eksterne SSH-økt. Vi viser deg hvordan.

Når du vil bruke omvendt SSH-tunneling

Noen ganger kan eksterne datamaskiner være vanskelige å nå. Nettstedet de befinner seg på kan ha strenge brannmurregler på plass, eller kanskje den lokale administratoren har satt opp kompleks Nettverksadresseoversettelse regler. Hvordan når du en slik datamaskin hvis du trenger å koble til den?

La oss etablere noen etiketter. Datamaskinen din er den lokale datamaskinen fordi den er i nærheten av deg. Datamaskinen du skal koble til er den eksterne datamaskinen fordi den er på et annet sted enn deg.

For å skille mellom de lokale og eksterne datamaskinene som brukes i denne artikkelen, kalles den eksterne datamaskinen «wdzwdz» og kjører Ubuntu Linux (med lilla terminalvinduer). Den lokale datamaskinen heter «Sulaco» og kjører Manjaro Linux (med gule terminalvinduer).

Vanligvis fyrer du opp en SSH-tilkobling fra den lokale datamaskinen og koble til den eksterne datamaskinen. Det er ikke et alternativ i nettverksscenarioet vi beskriver. Det spiller ingen rolle hva det spesifikke nettverksproblemet er – dette er nyttig når du ikke kan SSH direkte til en ekstern datamaskin.

Men hvis nettverkskonfigurasjonen på din side er enkel, kan den eksterne datamaskinen koble til deg. Det alene er imidlertid ikke tilstrekkelig for dine behov, fordi det ikke gir deg en fungerende kommandolinjeøkt på den eksterne datamaskinen. Men det er en start. Du har en etablert forbindelse mellom de to datamaskinene.

  Hvordan ringe og besvare anrop på en iPad

Svaret ligger i omvendt SSH-tunneling.

Hva er omvendt SSH-tunneling?

Omvendt SSH-tunnelering lar deg bruke den etablerte tilkoblingen til å sette opp en ny tilkobling fra din lokale datamaskin tilbake til den eksterne datamaskinen.

Fordi den opprinnelige tilkoblingen kom fra den eksterne datamaskinen til deg, er det å bruke den til å gå i den andre retningen «omvendt.» Og fordi SSH er sikker, plasserer du en sikker tilkobling i en eksisterende sikker tilkobling. Dette betyr at tilkoblingen til den eksterne datamaskinen fungerer som en privat tunnel inne i den opprinnelige tilkoblingen.

Og så kommer vi til navnet «omvendt SSH-tunneling.»

Hvordan virker det?

Omvendt SSH-tunneling er avhengig av at den eksterne datamaskinen bruker den etablerte tilkoblingen for å lytte etter nye tilkoblingsforespørsler fra den lokale datamaskinen.

Den eksterne datamaskinen lytter på en nettverksport på den lokale datamaskinen. Hvis den oppdager en SSH-forespørsel til den porten, videresender den den tilkoblingsforespørselen tilbake til seg selv, nedover den etablerte tilkoblingen. Dette gir en ny tilkobling fra den lokale datamaskinen til den eksterne datamaskinen.

Det er lettere å sette opp enn det er å beskrive.

Bruker SSH Reverse Tunneling

SSH vil allerede være installert på din Linux-datamaskin, men du må kanskje starte SSH-demonen (sshd) hvis den lokale datamaskinen aldri har akseptert SSH-tilkoblinger før.

sudo systemctl start sshd

For å få SSH-demonen til å starte hver gang du starter datamaskinen på nytt, bruk denne kommandoen:

sudo systemctl enable sshd

På den eksterne datamaskinen bruker vi følgende kommando.

  Hva betyr "IRL" og hvordan bruker du det?

Alternativet -R (revers) forteller ssh at nye SSH-økter må opprettes på den eksterne datamaskinen.
«43022:localhost:22» forteller ssh at tilkoblingsforespørsler til port 43022 på den lokale datamaskinen skal videresendes til port 22 på den eksterne datamaskinen. Port 43022 ble valgt fordi det er det oppført som ikke-allokert. Det er ikke et spesielt nummer.
[email protected] er brukerkontoen den eksterne datamaskinen skal koble til på den lokale datamaskinen.

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

Du kan få en advarsel om at du aldri har koblet til den lokale datamaskinen før. Eller du kan se en advarsel når tilkoblingsdetaljene legges til listen over anerkjente SSH-verter. Hva du ser – om noe – avhenger av om det noen gang har blitt opprettet tilkoblinger fra den eksterne datamaskinen til den lokale datamaskinen.

Du vil bli bedt om passordet til kontoen du bruker for å koble til den lokale datamaskinen.

Merk at når tilkoblingen er opprettet, endres ledeteksten fra [email protected] til [email protected]

Vi er nå koblet til den lokale datamaskinen fra den eksterne datamaskinen. Det betyr at vi kan gi kommandoer til den. La oss bruke who-kommandoen for å se påloggingene på den lokale datamaskinen.

who

Vi kan se at personen med brukerkontoen som heter dave har logget på den lokale datamaskinen, og den eksterne datamaskinen har koblet seg til (med samme brukerlegitimasjon) fra IP-adressen 192.168.4.25.

Koble til den eksterne datamaskinen

Fordi tilkoblingen fra den eksterne datamaskinen er vellykket, og den lytter etter tilkoblinger, kan vi prøve å koble til den eksterne datamaskinen fra den lokale.

Den eksterne datamaskinen lytter på port 43022 på den lokale datamaskinen. Så – noe kontraintuitivt – for å opprette en tilkobling til den eksterne datamaskinen, ber vi ssh om å opprette en tilkobling til den lokale datamaskinen, på port 43022. Den tilkoblingsforespørselen vil bli videresendt til den eksterne datamaskinen.

ssh localhost -p 43022

Vi blir bedt om brukerkontopassordet, og kobles deretter til den eksterne datamaskinen fra den lokale datamaskinen. Manjaro-datamaskinen vår sier glad: «Velkommen til Ubuntu 18.04.2 LTS».

  Hvordan lage maler i Google Docs

Merk at ledeteksten er endret fra [email protected] til [email protected] Vi har nådd målet vårt om å lage en SSH-tilkobling til vår vanskelig tilgjengelige eksterne datamaskin.

Bruke SSH med nøkler

For å gjøre det mer praktisk å koble fra den eksterne datamaskinen til den lokale datamaskinen, kan vi sette opp SSH-nøkler.

Skriv inn denne kommandoen på den eksterne datamaskinen:

ssh-keygen

Du vil bli bedt om en passordfrase. Du kan trykke Enter for å ignorere passordfrasespørsmålene, men dette anbefales ikke. Det ville bety at alle på den eksterne datamaskinen kunne opprette en SSH-tilkobling til din lokale datamaskin uten å bli utfordret på passord.

Tre eller fire ord atskilt med symboler vil utgjøre en robust passordfrase.

SSH-nøklene dine vil bli generert.

Vi må overføre den offentlige nøkkelen til den lokale datamaskinen. Bruk denne kommandoen:

ssh-copy-id [email protected]

Du vil bli bedt om passordet for brukerkontoen du logger på, i dette tilfellet, [email protected]

Første gang du sender en tilkoblingsforespørsel fra den eksterne datamaskinen til den lokale datamaskinen, må du oppgi passordfrasen. Du trenger ikke å angi det igjen for fremtidige tilkoblingsforespørsler, så lenge terminalvinduet forblir åpent.

Ikke alle tunneler er skumle

Noen tunneler kan være mørke og kronglete, men omvendt SSH-tunnelering er ikke så vanskelig å navigere hvis du kan holde forholdet mellom den eksterne datamaskinen og den lokale datamaskinen rett i hodet. Deretter snu den.