Android

Hur man sätter upp ssh-tunneling (port vidarebefordran)

SSH Tunneling - Local & Remote Port Forwarding (by Example)

SSH Tunneling - Local & Remote Port Forwarding (by Example)

Innehållsförteckning:

Anonim

SSH-tunnling eller vidarebefordran av SSH-port är en metod för att skapa en krypterad SSH-anslutning mellan en klient och en servermaskin genom vilken serviceporter kan vidarebefordras.

SSH-vidarebefordran är användbar för att transportera nätverksdata för tjänster som använder ett okrypterat protokoll, till exempel VNC eller FTP, åtkomst till geobegränsat innehåll eller kringgå mellanliggande brandväggar. I princip kan du vidarebefordra alla TCP-portar och tunnelna trafiken över en säker SSH-anslutning.

Det finns tre typer av SSH-port vidarebefordran:

  • Lokal hamnspedition. - Vidarebefordrar en anslutning från klientvärden till SSH-servervärd och sedan till destinationsvärdporten. Ta bort vidarebefordran av port. - Vidarebefordrar en port från servervärd till klientvärd och sedan till destinationsvärdport.Dynamisk port vidarebefordran. - Skapar SOCKS-proxyserver som tillåter kommunikation över flera portar.

, vi kommer att prata om hur man ställer in lokala, fjärrstyrda och dynamiska krypterade SSH-tunnlar.

Lokal hamnspedition

Med lokal vidarebefordran kan du vidarebefordra en port på den lokala (ssh-klienten) maskinen till en port på fjärrmaskinen (ssh-servern), som sedan vidarebefordras till en port på destinationsmaskinen.

Vid denna typ av vidarebefordran lyssnar SSH-klienten på en given port och tunnlar alla anslutningar till den porten till den angivna porten på fjärr SSH-servern, som sedan ansluter till en port på destinationsmaskinen. Destinationsmaskinen kan vara fjärr SSH-servern eller vilken annan maskin som helst.

Lokal port-vidarebefordran används mest för att ansluta till en fjärrtjänst i ett internt nätverk, t.ex. en databas eller VNC-server.

I Linux passerar macOS och andra Unix-system för att skapa en lokal port-vidarebefordran alternativet -L till ssh klienten:

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

De använda alternativen är följande:

  • LOCAL_PORT - Den lokala maskinens ip och portnummer. När LOCAL_IP utelämnas binds ssh-klienten på localhost. DESTINATION:DESTINATION_PORT - IP- eller värdnamnet och porten för destinationsmaskinen. SERVER_IP - SERVER_IP SSH-användare och server-IP-adress.

Du kan använda vilket portnummer som är större än 1024 som en LOCAL_PORT . Portnummer som är mindre än 1024 är privilegierade portar och kan endast användas av root. Om din SSH-server lyssnar på en annan port än 22 (standard) använder du alternativet -p .

Destinationens värdnamn måste kunna lösas från SSH-servern.

Låt oss säga att du har en MySQL-databaseserver som körs på maskin db001.host ett internt (privat) nätverk, på port 3306 som är tillgängligt från maskinen pub001.host och du vill ansluta med din lokala maskin mysql klient till databaseservern. För att göra det kan du vidarebefordra anslutningen så:

ssh -L 3336:db001.host:3306 [email protected]

När du kör kommandot uppmanas du att ange det fjärranslutna SSH-användarlösenordet. När du har angett den loggas du in på fjärrservern och SSH-tunnelen kommer att upprättas. Det är en bra idé att konfigurera en SSH-nyckelbaserad autentisering och ansluta till servern utan att ange ett lösenord.

Om du nu pekar din lokala maskindatabassklient till 127.0.0.1:3336 , kommer anslutningen att vidarebefordras till db001.host:3306 MySQL-servern via pub001.host maskinen som fungerar som en mellanserver.

Du kan vidarebefordra flera portar till flera destinationer i ett enda ssh-kommando. Till exempel har du en annan MySQL-databasserver som körs på maskinen db002.host och du vill ansluta till båda servrarna från din lokala klient som du skulle köra:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

För att ansluta till den andra servern använder du 127.0.0.1:3337 .

När destinationsvärden är densamma som SSH-servern istället för att ange destinationsvärdens IP eller värdnamn kan du använda localhost .

Säg att du måste ansluta till en fjärrmaskin via VNC som körs på samma server och att den inte är tillgänglig från utsidan. Kommandot du skulle använda är:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Alternativet -f berättar för ssh kommandot att köra i bakgrunden och -N inte utföra ett fjärrkommando. Vi använder localhost eftersom VNC och SSH-servern körs på samma värd.

Vidarebefordran av fjärrport

Vidarebefordran av fjärr är motsatsen till lokal hamn vidarebefordran. Det låter dig vidarebefordra en port på fjärrmaskinen (ssh-server) till en port på den lokala (ssh-klienten) maskinen, som sedan vidarebefordras till en port på destinationsmaskinen.

Vid denna typ av vidarebefordran lyssnar SSH-servern på en given port och tunnlar alla anslutningar till den porten till den angivna porten på den lokala SSH-klienten, som sedan ansluter till en port på destinationsmaskinen. Destinationsmaskinen kan vara den lokala eller någon annan maskin.

I Linux passerar macOS och andra Unix-system för att skapa en fjärransport vidarebefordra alternativet -R till ssh klienten:

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

De använda alternativen är följande:

  • REMOTE_PORT - IP och REMOTE_PORT på fjärr SSH-servern. En tom REMOTE betyder att fjärr SSH-servern kommer att binda på alla gränssnitt. DESTINATION:DESTINATION_PORT - IP- eller värdnamnet och porten för destinationsmaskinen. SERVER_IP - SERVER_IP SSH-användare och server-IP-adress.

Lokal hamnspedition används mest för att ge åtkomst till en intern tjänst till någon från utsidan.

Låt oss säga att du utvecklar en webbapplikation på din lokala maskin och att du vill visa en förhandsvisning till din kollegautvecklare. Du har inte en offentlig IP så den andra utvecklaren kan inte komma åt applikationen via Internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Kommandot ovan gör att ssh-servern lyssnar på port 8080 och tunnelar all trafik från denna port till din lokala maskin på port 3000 .

Nu kan din the_ssh_server_ip:8080 skriva the_ssh_server_ip:8080 i sin webbläsare och förhandsgranska din fantastiska applikation.

Dynamisk port vidarebefordran

Med dynamisk portåterföring kan du skapa ett uttag på den lokala (ssh-klienten) maskinen som fungerar som en SOCKS-proxyserver. När en klient ansluter till denna port vidarebefordras anslutningen till fjärrmaskinen (ssh-server), som sedan vidarebefordras till en dynamisk port på destinationsmaskinen.

På så sätt ansluter alla applikationer som använder SOCKS-proxy till SSH-servern och servern kommer att vidarebefordra all trafik till sin verkliga destination.

I Linux överför macOS och andra Unix-system för att skapa en dynamisk port-vidarebefordran (SOCKS) alternativet -D till ssh klienten:

ssh -D LOCAL_PORT SSH_SERVER

De använda alternativen är följande:

  • LOCAL_PORT - Den lokala maskinens ip och portnummer. När LOCAL_IP utelämnas binds ssh-klienten på localhost. SERVER_IP - SERVER_IP SSH-användare och server-IP-adress.

Ett typiskt exempel på en dynamisk port vidarebefordran är att tunnelnera webbläsartrafiken via en SSH-server.

Följande kommando skapar en SOCKS-tunnel på port 9090 :

ssh -D 9090 -N -f [email protected]

När tunneln är etablerad kan du konfigurera din applikation för att använda den. Den här artikeln förklarar hur du konfigurerar webbläsaren Firefox och Google Chrome för att använda SOCKS-proxy.

Portens vidarebefordran måste konfigureras separat för varje applikation som du vill tunnelnera trafiken trodde.

Ställ in SSH-tunnel i Windows

Windows-användare kan skapa SSH-tunnlar med PuTTY SSH-klienten. Du kan ladda ner PuTTY här.

  1. Starta kitt och ange SSH-serverns IP-adress i fältet Host name (or IP address) .

    Ett nytt fönster som ber om ditt användarnamn och lösenord dyker upp. När du anger ditt användarnamn och lösenord kommer du att vara inloggad på din server och SSH-tunneln startas.

    Om du ställer in autentisering av offentlig nyckel kan du ansluta till din server utan att ange ett lösenord.

Slutsats

Vi har visat dig hur du ställer in SSH-tunnlar och vidarebefordrar trafiken genom en säker SSH-anslutning. För enkel användning kan du definiera SSH-tunneln i din SSH-konfigurationsfil eller skapa ett Bash-alias som ställer in SSH-tunneln.

ssh säkerhet