Vad är Reverse SSH Tunneling? (och hur man använder det)

Behöver du SSH till en onåbar Linux-dator? Låt den ringa dig och gräv ner den anslutningen för att få din egen fjärrstyrda SSH-session. Vi visar dig hur.

När du vill använda omvänd SSH-tunneling

Ibland kan fjärrdatorer vara svåra att nå. Webbplatsen de finns på kan ha stränga brandväggsregler på plats, eller så har den lokala administratören konfigurerat komplex Nätverksadressöversättning regler. Hur når man en sådan dator om man behöver ansluta till den?

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

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

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

Men om nätverkskonfigurationen på din sida är okomplicerad, kan fjärrdatorn ansluta till dig. Det är dock inte tillräckligt för dina behov, eftersom det inte ger dig en fungerande kommandoradssession 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 Reverse SSH Tunneling?

Omvänd SSH-tunnling låter dig använda den etablerade anslutningen för att skapa en ny anslutning från din lokala dator tillbaka till fjärrdatorn.

Eftersom den ursprungliga anslutningen kom från fjärrdatorn till dig, använder den för att gå åt andra hållet att använda den ”omvänt”. Och eftersom SSH är säkert sätter du en säker anslutning i 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 ”omvänd SSH-tunnling.”

Hur fungerar det?

Omvänd SSH-tunnling förlitar sig på att fjärrdatorn använder den etablerade anslutningen för att lyssna efter 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-begäran till den porten, vidarebefordrar den den anslutningsbegäran tillbaka till sig själv, ner den etablerade anslutningen. Detta ger en ny anslutning från den lokala datorn till fjärrdatorn.

Det är lättare att ställa in än att beskriva.

Använder SSH Reverse Tunneling

SSH kommer redan att vara installerat på din Linux-dator, men du kan behöva starta SSH-demonen (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 din dator, använd det här kommandot:

sudo systemctl enable sshd

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

Alternativet -R (omvänd) talar om för ssh att nya SSH-sessioner måste skapas på fjärrdatorn.
”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 det är det anges som otilldelad. 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å kanske du ser 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 anslutningar någonsin har gjorts från fjärrdatorn till den lokala datorn.

Du kommer att bli ombedd att ange lösenordet för kontot du använder för att ansluta till den lokala datorn.

Observera att när anslutningen har gjorts ändras kommandotolken från [email protected] till [email protected]

Vi är nu anslutna till den lokala datorn från fjärrdatorn. Det betyder att vi kan utfärda kommandon till den. Låt oss använda who-kommandot 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 fjärrdatorn har anslutit (med samma användaruppgifter) från IP-adress 192.168.4.25.

Ansluter till fjärrdatorn

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

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 till den lokala datorn, på port 43022. Den anslutningsbegäran kommer att 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”.

Observera att kommandotolken har ändrats från [email protected] till [email protected] Vi har uppnått vårt mål att göra en SSH-anslutning till vår svåråtkomliga fjärrdator.

Använder SSH med nycklar

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

Skriv detta kommando på fjärrdatorn:

ssh-keygen

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

Tre eller fyra ord separerade med symboler kommer att göra en robust lösenfras.

Dina SSH-nycklar kommer att genereras.

Vi måste överföra den publika nyckeln till den lokala datorn. Använd detta kommando:

ssh-copy-id [email protected]

Du kommer att bli ombedd att ange lösenordet för användarkontot du loggar in på, i detta fall, [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ösenordsfrasen. Du behöver inte ange det igen för framtida anslutningsförfrågningar, så länge som terminalfönstret är öppet.

Alla tunnlar är inte skrämmande

Vissa tunnlar kan vara mörka och krokiga, men omvänd SSH-tunnling är inte så svårt att navigera om du kan hålla förhållandet mellan fjärrdatorn och den lokala datorn rakt i huvudet. Vänd sedan om det.