Hemsida » hur » Så här använder du SSH Tunneling för att få tillgång till begränsade servrar och bläddra säkert

    Så här använder du SSH Tunneling för att få tillgång till begränsade servrar och bläddra säkert

    En SSH-klient ansluts till en Secure Shell-server, som låter dig köra terminalkommandon som om du satt framför en annan dator. Men en SSH-klient låter dig också "tunnelera" en port mellan ditt lokala system och en fjärr SSH-server.

    Det finns tre olika typer av SSH tunneler, och de används alla för olika ändamål. Varje innebär att man använder en SSH-server för att omdirigera trafik från en nätverksport till en annan. Trafiken skickas över den krypterade SSH-anslutningen, så den kan inte övervakas eller ändras i transit.

    Du kan göra detta med ssh kommandot som ingår i Linux, MacOS och andra UNIX-liknande operativsystem. På Windows, som inte innehåller ett inbyggt ssh-kommando, rekommenderar vi det fria verktyget PuTTY att ansluta till SSH-servrar. Den stöder också SSH tunnelbana.

    Lokal portleverans: Gör fjärrresurser tillgängliga på ditt lokala system

    Med "Local Port forwarding" kan du få tillgång till lokala nätverksresurser som inte exponeras för Internet. Låt oss till exempel säga att du vill komma åt en databasserver på ditt kontor från ditt hem. Av säkerhetsskäl är den databassserver bara konfigurerad för att acceptera anslutningar från det lokala kontorsnätverket. Men om du har tillgång till en SSH-server på kontoret, och att SSH-servern tillåter anslutningar från utanför kontorsnätet, kan du ansluta till den SSH-servern hemifrån och få tillgång till databasservern som om du var på kontoret. Detta är ofta fallet eftersom det är lättare att säkra en enda SSH-server mot attacker än att säkra en mängd olika nätverksresurser.

    För att göra detta etablerar du en SSH-anslutning med SSH-servern och berättar klienten att vidarebefordra trafik från en viss port från din lokala dator, till exempel port 1234-till adressen till databasens server och dess port på kontorsnätverket. Så när du försöker komma åt databassservern i port 1234, blir din nuvarande dator, "localhost", trafiken automatiskt "tunnad" över SSH-anslutningen och skickad till databasservern. SSH-servern sitter i mitten och vidarebefordrar trafiken fram och tillbaka. Du kan använda kommandoraden eller det grafiska verktyget för att komma åt databasservern som om den körde på din lokala dator.

    För att använda lokal vidarebefordran, anslut normalt till SSH-servern, men leverera även -L argument. Syntaxen är:

    ssh -L local_port: remote_address: remote_port anvä[email protected]

    Låt oss till exempel säga att databassservern på ditt kontor ligger på 192.168.1.111 på kontorsnätet. Du har tillgång till kontors SSH-server på ssh.youroffice.com , och ditt användarkonto på SSH-servern är guppa . I så fall skulle ditt kommando se ut så här:

    ssh-L 8888: 192.168.1.111: 1234 [email protected]

    Efter att ha kört det kommandot skulle du kunna komma åt databassservern på port 8888 på localhost. Så om databasservern erbjöd webbåtkomst kan du ansluta http: // localhost: 8888 till din webbläsare för att komma åt den. Om du hade ett kommandoradsverktyg som behöver nätverksadressen till en databas, skulle du ange det på localhost: 8888. All trafik som skickas till port 8888 på din dator kommer att tunnelas till 192.168.1.111:1234 på ditt kontorsnätverk.

    Det är lite mer förvirrande om du vill ansluta till ett serverns program som körs på samma system som SSH-servern själv. Låt oss till exempel säga att du har en SSH-server som körs i port 22 på din kontorsdator, men du har också en databasserver som körs i port 1234 på samma system i samma adress. Du vill komma åt databaseserveren hemifrån, men systemet accepterar bara SSH-anslutningar i port 22 och dess brandvägg tillåter inte några andra externa anslutningar.

    I det här fallet kan du köra ett kommando som följande:

    ssh-L 8888: localhost: 1234 [email protected]

    När du försöker komma åt databassservern i port 8888 på din nuvarande dator, skickas trafiken över SSH-anslutningen. När det kommer till systemet som kör SSH-servern, skickar SSH-servern det till port 1234 på "localhost", vilket är samma PC som kör SSH-servern själv. Så betyder "localhost" i kommandot ovan "localhost" från fjärrserverens perspektiv.

    För att göra detta i PuTTY-programmet på Windows, välj Connection> SSH> Tunnels. Välj alternativet "Lokalt". För "Source Port", skriv in den lokala porten. För "Destination", ange destinationsadress och port i formuläret remote_address: remote_port.

    Om du till exempel vill skapa samma SSH-tunnel som ovan, skulle du ange 8888 som källporten och localhost: 1234 som destination. Klicka på "Lägg till" efteråt och klicka sedan på "Öppna" för att öppna SSH-anslutningen. Du måste också ange adressen och porten på SSH-servern själv på huvudmenyn "Session" innan du ansluter, förstås.

    Fjärrports vidarebefordran: Gör lokala resurser tillgängliga på ett fjärrsystem

    "Fjärrports vidarebefordran" är motsatsen till lokal vidarebefordran och används inte så ofta. Det låter dig göra en resurs på din lokala dator tillgänglig på SSH-servern. Låt oss till exempel säga att du kör en webbserver på den lokala datorn du sitter framför. Men din dator ligger bakom en brandvägg som inte tillåter inkommande trafik till serverns programvara.

    Om du antar att du kan komma åt en fjärrstyrd SSH-server, kan du ansluta till den SSH-servern och använda fjärrporten vidarebefordran. Din SSH-klient kommer att berätta för servern att vidarebefordra en specifik portstämpel, port 1234-på SSH-servern till en viss adress och port på din nuvarande dator eller lokalt nätverk. När någon kommer till porten 1234 på SSH-servern, kommer den trafiken automatiskt att "tunnelas" över SSH-anslutningen. Alla som har tillgång till SSH-servern kommer att kunna komma åt webbservern som körs på din dator. Detta är effektivt ett sätt att tunnelera genom brandväggar.

    För att använda fjärröverföring, använd ssh kommando med -R argument. Syntaxen är i stort sett densamma som vid lokal vidarebefordran:

    ssh-R remote_port: local_address: local_port anvä[email protected]

    Låt oss säga att du vill göra en serverns applikation att lyssna i port 1234 på din lokala dator, som finns tillgänglig i port 8888 på fjärr-SSH-servern. SSH-serverns adress är ssh.youroffice.com och ditt användarnamn på SSH-servern är guppa. Du skulle köra följande kommando:

    ssh-R 8888: localhost: 1234 [email protected]

    Någon kunde då ansluta till SSH-servern i port 8888 och den anslutningen skulle tunnelas till serverns applikation som körs i port 1234 på den lokala datorn som du etablerat anslutningen från.

    För att göra detta i PuTTY på Windows, välj Connection> SSH> Tunnels. Välj alternativet "Fjärrkontroll". För "Source Port", ange fjärrporten. För "Destination", ange destinationsadress och port i formuläret local_address: local_port.

    Om du till exempel vill skapa ovanstående exempel skulle du ange 8888 som källporten och localhost: 1234 som destination. Klicka på "Lägg till" efteråt och klicka sedan på "Öppna" för att öppna SSH-anslutningen. Du måste också ange adressen och porten på SSH-servern själv på huvudmenyn "Session" innan du ansluter, förstås.

    Människor kunde då ansluta till port 8888 på SSH-servern och deras trafik skulle tunnelas till port 1234 på ditt lokala system.

    Som standard lyssnar den fjärranslutna SSH-servern bara på anslutningar från samma värd. Med andra ord kommer bara personer på samma system som SSH-servern själv att kunna ansluta. Detta är av säkerhetsskäl. Du måste aktivera alternativet "GatewayPorts" i sshd_config på fjärr-SSH-servern om du vill åsidosätta detta beteende.

    Dynamisk port vidarebefordran: Använd din SSH-server som en proxy

    Det finns också "dynamisk port vidarebefordran", som fungerar på samma sätt som en proxy eller VPN. SSH-klienten skapar en SOCKS-proxy som du kan konfigurera program som ska användas. All trafik som skickas via proxy skickas via SSH-servern. Detta liknar lokal vidarebefordran-det tar lokaltrafik skickat till en viss port på din dator och skickar den över SSH-anslutningen till en avlägsen plats.

    Låt oss till exempel säga att du använder ett offentligt Wi-Fi-nätverk. Du vill bläddra säkert utan att vara snooped på. Om du har tillgång till en SSH-server hemma kan du ansluta till den och använda dynamisk port vidarebefordran. SSH-klienten skapar en SOCKS-proxy på din dator. All trafik som skickas till den proxy kommer att skickas via SSH-serverns anslutning. Ingen som övervakar det offentliga Wi-Fi-nätverket kommer att kunna övervaka din webbläsning eller censurera de webbplatser du kan komma åt. Med tanke på webbplatser som du besöker kommer det att vara som om du satt framför din dator hemma. Detta innebär också att du kan använda det här tricket för att få tillgång till US-only webbplatser medan du befinner dig utanför USA - förutsatt att du har tillgång till en SSH-server i USA, förstås.

    Som ett annat exempel kan du komma åt ett mediaserverprogram som du har på ditt hemnätverk. Av säkerhetsskäl får du bara en SSH-server utsatt för Internet. Du tillåter inte inkommande anslutningar från Internet till ditt mediaserverprogram. Du kan konfigurera dynamisk port vidarebefordran, konfigurera en webbläsare för att använda SOCKS proxy och sedan få tillgång till servrar som körs i ditt hemnätverk via webbläsaren som om du satt framför ditt SSH-system hemma. Om din mediaserver finns på port 192.168.1.123 i ditt hemnätverk, kan du t.ex. ansluta adressen 192.168.1.123 in i någon applikation som använder SOCKS-proxy och du skulle få tillgång till medieservern som om du var i ditt hemnätverk.

    För att använda dynamisk vidarebefordran, kör kommandot ssh med -D argument, som så:

    ssh -D local_port anvä[email protected]

    Låt oss till exempel säga att du har tillgång till en SSH-server på ssh.yourhome.com och ditt användarnamn på SSH-servern är guppa . Du vill använda dynamisk vidarebefordran för att öppna en SOCKS-proxy i port 8888 på den aktuella datorn. Du skulle köra följande kommando:

    ssh-D 8888 [email protected]

    Du kan då konfigurera en webbläsare eller ett annat program för att använda din lokala IP-adress (127.0.01) och port 8888. All trafik från den applikationen skulle omdirigeras genom tunneln.

    För att göra detta i PuTTY på Windows, välj Connection> SSH> Tunnels. Välj alternativet "Dynamiskt". För "Source Port", skriv in den lokala porten.

    Om du till exempel vill skapa en SOCKS-proxy på port 8888, skulle du ange 8888 som källporten. Klicka på "Lägg till" efteråt och klicka sedan på "Öppna" för att öppna SSH-anslutningen. Du måste också ange adressen och porten på SSH-servern själv på huvudmenyn "Session" innan du ansluter, förstås.

    Du kan då konfigurera en applikation för att komma åt SOCKS-proxy på din lokala dator (det vill säga IP-adress 127.0.0.1, som pekar på din lokala dator) och ange rätt port.

    Till exempel kan du konfigurera Firefox för att använda SOCKS-proxyen. Det här är särskilt användbart eftersom Firefox kan ha egna proxyinställningar och behöver inte använda proxyinställningar för hela systemet. Firefox skickar sin trafik via SSH-tunneln, medan andra applikationer normalt använder din Internetanslutning.

    När du gör det i Firefox, välj "Manuell proxy-konfiguration", skriv "127.0.0.1" i SOCKS-värdrutan och skriv in den dynamiska porten i "Port" -rutan. Lämna HTTP Proxy, SSL Proxy och FTP Proxy rutorna tomma.

    Tunneln kommer att förbli aktiv och öppen så länge du har SSH-sessionen öppen. När du avslutar din SSH-session och kopplar bort från en server stängs tunneln också. Koppla bara igen med rätt kommando (eller lämpliga alternativ i PuTTY) för att öppna tunneln igen.