SSH Tunneling - Local & Remote Port Forwarding (by Example)
Innehållsförteckning:
- Lokal hamnspedition
- Vidarebefordran av fjärrport
- Dynamisk port vidarebefordran
- Ställ in SSH-tunnel i Windows
- Slutsats
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ärLOCAL_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 ochREMOTE_PORT
på fjärr SSH-servern. En tomREMOTE
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ärLOCAL_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.
-
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äkerhetLedamöter av Europaparlamentet kommer att avgöra om en rad frågor, bland annat hur man reglerar telekomföretag i EU, hur man straffar företag som snedvrider konkurrensen, hur man delar radiofrekvenser som släpps av TV: s migrering till digital sändning och hur man skyddar medborgarnas data i den digitala tiden.
Men de är delade om huruvida IP-adresser ska ses som personuppgifter. "Vi kommer att be kommissionen att formellt lägga fram en rapport om detta", säger Malcolm Harbour, en brittisk konservativ parlamentsledamot som spelar en central roll för att hylla den så kallade telekomrevisionen genom parlamentet.
Enkel port vidarebefordran Freebie Hjälper hemroutrar Använda onlineapplikationer
Konfigurera din hemrouter för att fungera ordentligt med fina Internet-applikationer, till exempel spel.
Hur man sätter upp ssh sockertunnel för privat surfning
Denna handledning leder dig genom processen att skapa en krypterad SSH-tunnel och konfigurera webbläsare för Firefox och Google Chrome för att använda SOCKS-proxy.