Android

Hvordan sette opp ssh tunneling (port forwarding)

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

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

Innholdsfortegnelse:

Anonim

SSH-tunneling eller videresending av SSH-port er en metode for å lage en kryptert SSH-forbindelse mellom en klient og en servermaskin som tjenesteporter kan videresendes gjennom.

SSH-videresending er nyttig for å transportere nettverksdata for tjenester som bruker en ukryptert protokoll, for eksempel VNC eller FTP, få tilgang til geobegrenset innhold eller omgå mellomliggende brannmurer. I utgangspunktet kan du videresende hvilken som helst TCP-port og tunnelere trafikken over en sikker SSH-tilkobling.

Det er tre typer SSH-portvideresending:

  • Lokal havnevideresending. - Videresender en forbindelse fra klientverten til SSH-serververten og deretter til destinasjonsvertsporten. Fjern portvideresending. - Videresender en port fra serververten til klientverten og deretter til destinasjonsvertsporten. Dynamisk portvideresending. - Oppretter SOCKS proxy-server som tillater kommunikasjon på tvers av en rekke porter.

, vil vi snakke om hvordan du setter opp lokale, eksterne og dynamiske krypterte SSH-tunneler.

Lokal havnevideresending

Ved lokal videresending av port kan du videresende en port på den lokale maskinen (ssh-klienten) til en port på den eksterne (ssh-serveren) maskinen, som deretter videresendes til en port på destinasjonsmaskinen.

I denne typen videresending lytter SSH-klienten på en gitt port og tunneler enhver forbindelse til den porten til den spesifiserte porten på den eksterne SSH-serveren, som deretter kobles til en port på destinasjonsmaskinen. Destinasjonsmaskinen kan være den eksterne SSH-serveren eller en hvilken som helst annen maskin.

Lokal portvideresending brukes mest for å koble til en ekstern tjeneste i et internt nettverk, for eksempel en database eller VNC-server.

I Linux passerer macOS og andre Unix-systemer for å lage en lokal port-videresending -L alternativet til ssh klienten:

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Alternativene som brukes er som følger:

  • LOCAL_PORT - Det lokale maskinens ip og portnummer. Når LOCAL_IP er utelatt, bindes ssh-klienten på localhost. DESTINATION:DESTINATION_PORT - IP- eller vertsnavnet og porten til destinasjonsmaskinen. SERVER_IP - Den eksterne SSH-brukeren og server-IP-adressen.

Du kan bruke et hvilket som helst portnummer større enn 1024 som en LOCAL_PORT . Porter som er mindre enn 1024 er privilegerte porter og kan bare brukes av root. Hvis SSH-serveren din lytter på en annen port enn 22 (standard), bruk alternativet -p .

Destinasjonsvertsnavnet må kunne løses fra SSH-serveren.

La oss si at du har en MySQL-databaseserver som kjører på maskin db001.host i et internt (privat) nettverk, på port 3306 som er tilgjengelig fra maskinen pub001.host og du vil koble deg til med din lokale maskin mysql klient til databaseserveren. For å gjøre det kan du videresende forbindelsen slik:

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

Når du har kjørt kommandoen, blir du bedt om å oppgi det eksterne SSH-brukerpassordet. Etter at du har lagt den inn, blir du logget på den eksterne serveren og SSH-tunnelen blir opprettet. Det er lurt å sette opp en SSH-nøkkelbasert autentisering og koble til serveren uten å oppgi et passord.

Hvis du nå peker den lokale maskindatabaseklienten til 127.0.0.1:3336 , vil forbindelsen bli videresendt til db001.host:3306 MySQL-serveren gjennom pub001.host maskinen som vil fungere som en mellomliggende server.

Du kan videresende flere porter til flere destinasjoner i en enkelt ssh-kommando. For eksempel har du en annen MySQL-databaseserver som kjører på maskinen db002.host og du vil koble til begge serverne fra den lokale klienten du vil kjøre:

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

For å koble til den andre serveren bruker du 127.0.0.1:3337 .

Når destinasjonsverten er den samme som SSH-serveren i stedet for å spesifisere destinasjonsverten IP eller vertsnavn, kan du bruke localhost .

Si at du trenger å koble til en ekstern maskin via VNC som kjører på samme server, og den er ikke tilgjengelig utenfra. Kommandoen du vil bruke er:

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

Alternativet -f forteller ssh kommandoen til å kjøre i bakgrunnen og -N ikke å utføre en ekstern kommando. Vi bruker localhost fordi VNC og SSH-serveren kjører på samme vert.

Videresending av ekstern port

Videresending av ekstern port er det motsatte av lokal portvideresending. Den lar deg videresende en port på den eksterne (ssh server) maskinen til en port på den lokale (ssh client) maskinen, som deretter videresendes til en port på destinasjonsmaskinen.

I denne typen videresending lytter SSH-serveren på en gitt port og tunneler enhver forbindelse til den porten til den spesifiserte porten på den lokale SSH-klienten, som deretter kobles til en port på destinasjonsmaskinen. Destinasjonsmaskinen kan være den lokale maskinen eller hvilken som helst annen maskin.

I Linux passerer macOS og andre Unix-systemer for å lage en ekstern portvideresending av alternativet -R til ssh klienten:

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Alternativene som brukes er som følger:

  • REMOTE_PORT - IP-en og portnummeret på den eksterne SSH-serveren. En tom REMOTE betyr at den eksterne SSH-serveren vil bindes på alle grensesnitt. DESTINATION:DESTINATION_PORT - IP- eller vertsnavnet og porten til destinasjonsmaskinen. SERVER_IP - Den eksterne SSH-brukeren og server-IP-adressen.

Lokal havnevideresending brukes mest for å gi tilgang til en intern tjeneste til noen utenfra.

La oss si at du utvikler en webapplikasjon på din lokale maskin, og at du vil vise en forhåndsvisning til medutvikleren din. Du har ikke en offentlig IP, slik at den andre utvikleren ikke får tilgang til applikasjonen via Internett.

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

Kommandoen over vil gjøre ssh-serveren til å lytte på port 8080 og tunnel all trafikk fra denne porten til din lokale maskin på port 3000 .

Nå kan din the_ssh_server_ip:8080 skrive the_ssh_server_ip:8080 i nettleseren hans og forhåndsvise det fantastiske programmet ditt.

Videresending av dynamisk port

Videresending av dynamisk port lar deg lage en socket på den lokale maskinen (ssh client) som fungerer som en SOCKS proxy-server. Når en klient kobler seg til denne porten, blir forbindelsen videresendt til den eksterne maskinen (ssh server), som deretter videresendes til en dynamisk port på destinasjonsmaskinen.

På denne måten kobles alle applikasjonene som bruker SOCKS-proxy til SSH-serveren, og serveren vil videresende all trafikk til den faktiske destinasjonen.

I Linux passerer macOS og andre Unix-systemer for å lage en dynamisk port forwarding (SOCKS) alternativet -D til ssh klienten:

ssh -D LOCAL_PORT SSH_SERVER

Alternativene som brukes er som følger:

  • LOCAL_PORT - Det lokale maskinens ip og portnummer. Når LOCAL_IP er utelatt, bindes ssh-klienten på localhost. SERVER_IP - Den eksterne SSH-brukeren og server-IP-adressen.

Et typisk eksempel på en videresending av dynamisk port er å tunnelere nettlesertrafikken gjennom en SSH-server.

Følgende kommando oppretter en SOCKS-tunnel på port 9090 :

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

Når tunnelen er etablert, kan du konfigurere applikasjonen din til å bruke den. Denne artikkelen forklarer hvordan du konfigurerer Firefox og Google Chrome nettleser til å bruke SOCKS-proxy.

Port-videresendingen må konfigureres separat for hvert program du vil tunnelere trafikken trodde det.

Konfigurer SSH-tunnel i Windows

Windows-brukere kan opprette SSH-tunneler ved å bruke PuTTY SSH-klienten. Du kan laste ned PuTTY her.

  1. Start kitt, og skriv inn Host name (or IP address) til SSH-serveren i feltet Host name (or IP address) .

    Et nytt vindu som ber om brukernavn og passord vises. Når du har angitt brukernavnet og passordet ditt, vil du være logget på serveren din og SSH-tunnelen startes.

    Hvis du konfigurerer autentisering av offentlig nøkkel, kan du koble deg til serveren din uten å oppgi et passord.

Konklusjon

Vi har vist deg hvordan du setter opp SSH-tunneler og videresender trafikken gjennom en sikker SSH-forbindelse. For enkel bruk kan du definere SSH-tunnelen i SSH-konfigurasjonsfilen eller opprette et Bash-alias som vil sette opp SSH-tunnelen.

ssh sikkerhet