Vad är omvänd SSH-tunnling? (och hur man använder den)

  • Dave McKay

    @TheGurkha

  • July 18, 2019, 9:00am EDT
Eny Setiyowati/.com

Behövs det SSH till en oåtkomlig Linux-dator? Be den ringa dig, och gräv sedan ner den anslutningen för att få din egen SSH-session på distans. Vi visar dig hur.

När du vill använda Reverse SSH Tunneling

Ibland kan fjärrdatorer vara svåra att nå. Platsen där de befinner sig kan ha strikta brandväggsregler, eller så kanske den lokala administratören har ställt in komplexa regler för nätverksadressomvandling. Hur når du en sådan dator om du behöver ansluta till den?

Låt oss fastställa några etiketter. Din dator är den lokala datorn eftersom den befinner sig nära dig. Datorn du ska ansluta till är fjärrdatorn eftersom den befinner sig på en annan plats än du.

Annons

För att skilja mellan den lokala datorn och fjärrdatorn som används i den här artikeln heter fjärrdatorn ”howtogeek” och kör Ubuntu Linux (med lila terminalfönster). Den lokala datorn heter ”Sulaco” och kör Manjaro Linux (med gula terminalfönster).

Normalt sett skulle du starta en SSH-anslutning från den lokala datorn och ansluta till fjärrdatorn. Det är inte ett alternativ i det nätverksscenario vi beskriver. Det spelar egentligen ingen roll vad det specifika nätverksproblemet är – detta är användbart när du inte kan SSH-ansluta direkt till en fjärrdator.

Men om nätverkskonfigurationen på din sida är okomplicerad kan fjärrdatorn ansluta till dig. Detta är dock inte tillräckligt för dina behov, eftersom det inte ger dig en fungerande kommandoradsession på fjärrdatorn. Men det är en början. Du har en etablerad anslutning mellan de två datorerna.

Svaret ligger i omvänd SSH-tunnling.

Vad är omvänd SSH-tunnling?

Med omvänd SSH-tunnling kan du använda den etablerade anslutningen för att upprätta en ny anslutning från din lokala dator tillbaka till fjärrdatorn.

Annons

Då den ursprungliga anslutningen kom från fjärrdatorn till dig, används den för att gå i andra riktningen ”i omvänd riktning”. Och eftersom SSH är säkert, lägger du en säker anslutning inuti en befintlig säker anslutning. Detta innebär att din anslutning till fjärrdatorn fungerar som en privat tunnel inuti den ursprungliga anslutningen.

Och så kommer vi fram till namnet ”reverse SSH tunneling.”

Hur fungerar det?

Reverse SSH tunneling bygger på att fjärrdatorn använder den etablerade anslutningen för att lyssna på nya anslutningsförfrågningar från den lokala datorn.

Fjärrdatorn lyssnar på en nätverksport på den lokala datorn. Om den upptäcker en SSH-förfrågan till den porten vidarebefordrar den anslutningsförfrågan tillbaka till sig själv via den etablerade anslutningen. Detta ger en ny anslutning från den lokala datorn till fjärrdatorn.

Reklam

Det är lättare att installera än att beskriva.

Användning av SSH Reverse Tunneling

SSH är redan installerat på din Linux-dator, men du kan behöva starta SSH-daemon (sshd) om den lokala datorn aldrig har accepterat SSH-anslutningar tidigare.

sudo systemctl start sshd

För att få SSH-demonen att starta varje gång du startar om datorn använder du det här kommandot:

sudo systemctl enable sshd

På fjärrdatorn använder vi följande kommando.

  • Optionen -R (reverse) talar om för ssh att nya SSH-sessioner måste skapas på fjärrdatorn.
  • Optionen ”43022:localhost:22” talar om för ssh att anslutningsbegäranden till port 43022 på den lokala datorn ska vidarebefordras till port 22 på fjärrdatorn. Port 43022 valdes eftersom den anges som oallokerad. Det är inget speciellt nummer.
  • [email protected] är det användarkonto som fjärrdatorn ska ansluta till på den lokala datorn.
ssh -R 43022:localhost:22 [email protected]

Du kan få en varning om att du aldrig har anslutit till den lokala datorn tidigare. Eller så får du en varning när anslutningsdetaljerna läggs till i listan över erkända SSH-värdar. Vad du ser – om något – beror på om det någonsin har gjorts anslutningar från fjärrdatorn till den lokala datorn.

Reklam

Du kommer att uppmanas att ange lösenordet för det konto du använder för att ansluta till den lokala datorn.

Bemärk att när anslutningen har gjorts ändras kommandoprompten från dave@howtogeek till dave@sulaco.

Vi är nu anslutna till den lokala datorn från fjärrdatorn. Det innebär att vi kan utfärda kommandon till den. Låt oss använda kommandot who för att se inloggningarna på den lokala datorn.

who

Vi kan se att personen med användarkontot som heter dave har loggat in på den lokala datorn, och att fjärrdatorn har anslutit sig (med samma användaruppgifter) från IP-adressen 192.168.4.25.

RELATERAT: Hur man bestämmer det aktuella användarkontot i Linux

Anslutning till fjärrdatorn

Då anslutningen från fjärrdatorn är framgångsrik och den lyssnar på anslutningar kan vi försöka ansluta till fjärrdatorn från den lokala datorn.

Annons

Fjärrdatorn lyssnar på port 43022 på den lokala datorn. Så – något kontraintuitivt – för att göra en anslutning till fjärrdatorn ber vi ssh att göra en anslutning den lokala datorn, på port 43022. Den anslutningsförfrågan vidarebefordras till fjärrdatorn.

ssh localhost -p 43022

Vi uppmanas att ange lösenordet för användarkontot och ansluts sedan till fjärrdatorn från den lokala datorn. Vår Manjaro-dator säger glatt: ”Välkommen till Ubuntu 18.04.2 LTS”.

Bemärk att kommandoprompten har ändrats från dave@sulaco till dave@howtogeek. Vi har uppnått vårt mål att göra en SSH-anslutning till vår svåråtkomliga fjärrdator.

Användning av SSH med nycklar

För att göra det bekvämare att ansluta från fjärrdatorn till den lokala datorn kan vi konfigurera SSH-nycklar.

På fjärrdatorn skriver du det här kommandot:

ssh-keygen

Annons

Du kommer att uppmanas att ange en lösenfras. Du kan trycka på Enter för att ignorera frågorna om lösenfras, men detta rekommenderas inte. Det skulle innebära att vem som helst på fjärrdatorn kan göra en SSH-anslutning till din lokala dator utan att bli utmanad om ett lösenord.

Tre eller fyra ord separerade med symboler utgör en robust lösenfras.

Dina SSH-nycklar kommer att genereras.

Vi måste överföra den offentliga nyckeln till den lokala datorn. Använd det här kommandot:

ssh-copy-id [email protected]

Reklam

Du kommer att uppmanas att ange lösenordet för det användarkonto du loggar in med, i det här fallet [email protected].

Första gången du gör en anslutningsbegäran från fjärrdatorn till den lokala datorn måste du ange lösenfrasen. Du behöver inte ange det igen vid framtida anslutningsförfrågningar så länge som terminalfönstret är öppet.

RELATERAT: Hur man skapar och installerar SSH-nycklar från Linux Shell

Not All Tunnels Are Scary

Vissa tunnlar kan vara mörka och snåriga, men omvänd SSH-tunnling är inte alltför svårt att navigera om du kan hålla förhållandet mellan fjärrdatorn och den lokala datorn rakt i ditt huvud. Sedan kan du vända det.

Dave McKay
Dave McKay använde datorer för första gången när håltejp med papper var på modet, och han har programmerat ända sedan dess. Efter över 30 år i IT-branschen är han nu teknikjournalist på heltid. Under sin karriär har han arbetat som frilansprogrammerare, chef för ett internationellt programvaruutvecklingsteam, projektledare för IT-tjänster och senast som dataskyddsombud. Dave är en Linux-evangelist och förespråkare av öppen källkod.Läs hela biografin ”

Lämna ett svar

Din e-postadress kommer inte publiceras.