Kā izmantot SSH tunelēšanu, lai piekļūtu ierobežotajiem serveriem un pārlūkotu droši
SSH klients izveido savienojumu ar Secure Shell serveri, kas ļauj darbināt termināļa komandas, it kā jūs sēdētu pie cita datora. Bet SSH klients arī ļauj “tunelēt” portu starp jūsu vietējo sistēmu un attālo SSH serveri.
Ir trīs dažādi SSH tunelēšanas veidi, un tie visi tiek izmantoti dažādiem mērķiem. Katrs no tiem ietver SSH servera izmantošanu, lai novirzītu satiksmi no viena tīkla porta uz citu. Satiksme tiek nosūtīta caur šifrētu SSH savienojumu, tāpēc to nevar pārraudzīt vai pārveidot tranzītā.
To var izdarīt ar ssh
komandu, kas iekļauta Linux, MacOS un citās UNIX līdzīgās operētājsistēmās. Operētājsistēmā Windows, kurā nav iekļauta iebūvēta ssh komanda, mēs iesakām izmantot bezmaksas rīku PuTTY, lai izveidotu savienojumu ar SSH serveriem. Tā atbalsta arī SSH tunelēšanu.
Vietējo ostu pāradresācija: padara attālos resursus pieejamus jūsu vietējā sistēmā
“Vietējo portu pārsūtīšana” ļauj piekļūt vietējiem tīkla resursiem, kas nav pakļauti internetam. Piemēram, pieņemsim, ka vēlaties piekļūt sava biroja datu bāzes serverim no mājām. Drošības apsvērumu dēļ šis datu bāzes serveris ir konfigurēts tikai, lai pieņemtu savienojumus no vietējā biroja tīkla. Bet, ja jums ir pieeja SSH serverim birojā, un ka SSH serveris nodrošina savienojumus no biroja tīkla, tad varat izveidot savienojumu ar šo SSH serveri no mājām un piekļūt datu bāzes serverim tā, it kā jūs būtu birojā. Bieži tas tā ir, jo ir vieglāk nodrošināt vienu SSH serveri pret uzbrukumiem, nevis nodrošināt dažādus tīkla resursus.
Lai to izdarītu, izveidojat SSH savienojumu ar SSH serveri un pastāstiet klientam, ka tā pārsūta datplūsmu no konkrētas porta no jūsu vietējā datora, piemēram, porta 1234 uz datu bāzes servera adresi un tās portu biroja tīklā. Tātad, mēģinot piekļūt datubāzes serverim jūsu pašreizējā datora 1234 portā “localhost”, šī satiksme tiek automātiski “tunelēta” SSH savienojumā un nosūtīta uz datu bāzes serveri. SSH serveris atrodas vidū, pārsūtot datplūsmu uz priekšu un atpakaļ. Jūs varat izmantot jebkuru komandrindu vai grafisko rīku, lai piekļūtu datu bāzes serverim tā, it kā tā darbotos jūsu vietējā datorā.
Lai izmantotu vietējo pārsūtīšanu, izveidojiet savienojumu ar SSH serveri parasti, bet arī piegādājiet -L
arguments. Sintakse ir:
ssh -L local_port: remote_address: remote_port lietotājvā[email protected]
Piemēram, pieņemsim, ka jūsu biroja datu bāzes serveris atrodas biroja tīklā 192.168.1.111. Jums ir piekļuve biroja SSH serverim vietnē ssh.youroffice.com
, un jūsu lietotāja konts SSH serverī bob
. Tādā gadījumā jūsu komanda izskatīsies šādi:
ssh-L 8888: 192.168.1.111: 1234 [email protected]
Pēc šīs komandas palaišanas jūs varētu piekļūt datu bāzes serverim portā 8888 vietējā vietnē. Tātad, ja datu bāzes serveris piedāvā piekļuvi internetam, varat piekļūt tīmekļa vietnei http: // localhost: 8888, lai piekļūtu tai. Ja jums bija komandrindas rīks, kuram ir nepieciešama datubāzes adrese, norādiet to vietējā vietnē: 8888. Visu datplūsmu, kas nosūtīta uz jūsu datora 8888 portu, jūsu birojā tiks tunelēta uz 192.168.1.111:1234.
Tas ir mazliet mulsinošāks, ja vēlaties izveidot savienojumu ar servera lietojumprogrammu, kas darbojas tajā pašā sistēmā, kurā pats SSH serveris. Piemēram, pieņemsim, ka jums ir SSH serveris, kas darbojas jūsu biroja datora 22. portā, bet jums ir arī datu bāzes serveris, kas darbojas tajā pašā sistēmā pie 1234 porta tajā pašā adresē. Jūs vēlaties piekļūt datu bāzes serverim no mājām, bet sistēma pieņem tikai SSH savienojumus 22. portā, un tā ugunsmūris nepieļauj citus ārējos savienojumus.
Šādā gadījumā jūs varat palaist komandu kā šādu:
ssh -L 8888: localhost: 1234 [email protected]
Mēģinot piekļūt datu bāzes serverim pašreizējā datora 8888 portā, satiksme tiks nosūtīta pa SSH savienojumu. Kad tas ierodas sistēmā, kurā darbojas SSH serveris, SSH serveris to nosūtīs uz portu 1234 uz “localhost”, kas ir pats PC, kurā darbojas pats SSH serveris. Tātad iepriekšminētās komandas “localhost” nozīmē “localhost” no attālā servera viedokļa.
Lai to izdarītu programmā PuTTY Windows, izvēlieties Savienojums> SSH> Tuneļi. Atlasiet opciju “Vietējais”. “Avota portam” ievadiet vietējo portu. “Galamērķis” ievadiet galamērķa adresi un portu formā remote_address: remote_port.
Piemēram, ja vēlaties iestatīt to pašu SSH tuneli, kā iepriekš, jūs ievadīsiet 8888
kā avota portu un localhost: 1234
kā galamērķi. Pēc tam noklikšķiniet uz "Pievienot" un pēc tam noklikšķiniet uz "Atvērt", lai atvērtu SSH savienojumu. Pirms savienojuma, protams, galvenajā “Sesijas” ekrānā jāievada arī SSH servera adrese un ports.
Attālinātā portu pārsūtīšana: padara vietējos resursus pieejamus attālā sistēmā
“Tālvadības pults pāradresācija” ir pretēja vietējai pārsūtīšanai, un to neizmanto tik bieži. Tas ļauj jums izveidot resursus vietējā datorā, kas pieejams SSH serverī. Piemēram, pieņemsim, ka jūs izmantojat tīmekļa serveri vietējā datorā, kuru jūs sēžat priekšā. Bet jūsu dators ir aiz ugunsmūra, kas neļauj ienākošajam datplūsmai uz servera programmatūru.
Pieņemot, ka varat piekļūt attālajam SSH serverim, varat izveidot savienojumu ar šo SSH serveri un izmantot attālo portu pārsūtīšanu. Jūsu SSH klients liks serverim nosūtīt SSH servera konkrētu portu, portu 1234-uz konkrētu adresi un portu pašreizējā datorā vai lokālajā tīklā. Kad kāds piekļūst SSH servera ostai 1234, šī satiksme automātiski tiks “tunelēta” SSH savienojumā. Ikviens, kam ir piekļuve SSH serverim, varēs piekļūt tīmekļa serverim, kas darbojas jūsu datorā. Tas ir veids, kā tunelēt caur ugunsmūri.
Lai izmantotu tālvadību, izmantojiet ssh
komandu ar -R
arguments. Sintakse lielā mērā ir tāda pati kā ar vietējo pārsūtīšanu:
ssh -R remote_port: local_address: local_port lietotājvā[email protected]
Pieņemsim, ka vēlaties, lai servera lietojumprogramma tiktu klausīta jūsu vietējā datora ostā 1234, kas ir pieejama tālvadības SSH servera 8888 portā. SSH servera adrese ir ssh.youroffice.com
un jūsu lietotājvārds SSH serverī ir bob. Jūs palaidīsiet šādu komandu:
ssh-R 8888: localhost: 1234 [email protected]
Pēc tam kāds varētu izveidot savienojumu ar SSH serveri 8888 portā, un šis savienojums tiktu noskaidrots uz servera lietojumprogrammu, kas darbojas vietējā datorā, kurā izveidojāt savienojumu no 1234..
Lai to izdarītu programmā Windows, izvēlieties Savienojums> SSH> Tuneļi. Izvēlieties opciju “Remote”. “Avota portam” ievadiet attālināto portu. “Galamērķis” ievadiet galamērķa adresi un portu formātā local_address: local_port.
Piemēram, ja vēlaties iestatīt iepriekš minēto piemēru, ievadiet to 8888
kā avota portu un localhost: 1234
kā galamērķi. Pēc tam noklikšķiniet uz "Pievienot" un pēc tam noklikšķiniet uz "Atvērt", lai atvērtu SSH savienojumu. Pirms savienojuma, protams, galvenajā “Sesijas” ekrānā jāievada arī SSH servera adrese un ports.
Pēc tam cilvēki varēja izveidot savienojumu ar SSH servera 8888 portu, un to satiksme būtu jāpārvieto uz vietējo sistēmu 1234.
Pēc noklusējuma attālais SSH serveris tikai klausās savienojumus no viena un tā paša saimnieka. Citiem vārdiem sakot, tikai cilvēki, kas darbojas tajā pašā sistēmā, kā pats SSH serveris, varēs izveidot savienojumu. Tas ir drošības apsvērumu dēļ. Ja vēlaties ignorēt šo uzvedību, tālvadības SSH serverī ir jāiespējo opcija “GatewayPorts” sshd_config..
Dinamiskā portu pārsūtīšana: izmantojiet savu SSH serveri kā starpniekserveri
Ir arī „dinamiskā portu pārsūtīšana”, kas darbojas līdzīgi kā starpniekserveris vai VPN. SSH klients izveidos SOCKS starpniekserveri, ko var konfigurēt lietošanai. Visa plūsma, kas nosūtīta caur starpniekserveri, tiks nosūtīta caur SSH serveri. Tas ir līdzīgs vietējai pāradresācijai - tas aizņem vietējo datplūsmu, kas nosūtīta uz konkrētu datora portu, un nosūta to SSH savienojumā ar attālo atrašanās vietu.
Piemēram, pieņemsim, ka izmantojat publisko Wi-Fi tīklu. Vēlaties droši pārlūkot, nepārkāpjot. Ja jums ir pieeja SSH serverim mājās, varat to izveidot un izmantot dinamisku portu pārsūtīšanu. SSH klients datorā izveidos SOCKS starpniekserveri. Visa satiksme, kas nosūtīta uz šo starpniekserveri, tiks nosūtīta SSH servera savienojumā. Neviens, kas pārrauga publisko Wi-Fi tīklu, nevarēs pārraudzīt jūsu pārlūkošanu vai cenzēt vietnes, kurās var piekļūt. No jebkuras vietnes, ko apmeklējat, perspektīva tas būs kā tad, ja mājās sēžat pie sava datora. Tas nozīmē arī to, ka jūs varat izmantot šo triku, lai piekļūtu ASV tikai tīmekļa vietnēm, kamēr ārpus ASV, protams, jums ir piekļuve SSH serverim ASV..
Kā citu piemēru, iespējams, vēlēsities piekļūt multivides servera lietojumprogrammai, kas atrodas jūsu mājas tīklā. Drošības apsvērumu dēļ jums var būt tikai SSH serveris, kas ir pakļauts internetam. Jūs neatļaujat ienākošos savienojumus no interneta uz mediju servera lietojumprogrammu. Varat iestatīt dinamisku portu pāradresāciju, konfigurēt tīmekļa pārlūkprogrammu, lai izmantotu SOCKS starpniekserveri, un pēc tam, izmantojot tīmekļa pārlūkprogrammu, piekļūtu serveriem, kas darbojas jūsu mājas tīklā, it kā jūs sēžat pie savas SSH sistēmas mājās. Piemēram, ja jūsu multivides serveris atrodas jūsu mājas tīklā 192.168.1.123, varat pieslēgt adresi 192.168.1.123
jebkurā programmā, izmantojot SOCKS starpniekserveri, un jūs piekļūtu multivides serverim tā, it kā jūs būtu savā mājas tīklā.
Lai izmantotu dinamisko pāradresāciju, palaidiet komandu ssh -D
arguments, piemēram:
ssh -D local_port lietotājvā[email protected]
Piemēram, pieņemsim, ka jums ir piekļuve SSH serverim vietnē ssh.yourhome.com
un jūsu lietotājvārds SSH serverī ir bob
. Jūs vēlaties izmantot dinamisko pāradresāciju, lai atvērtu SOCKS starpniekserveri pašreizējā datora 8888 portā. Jūs palaidīsiet šādu komandu:
ssh -D 8888 [email protected]
Pēc tam varat konfigurēt tīmekļa pārlūkprogrammu vai citu lietojumprogrammu, lai izmantotu vietējo IP adresi (127.0.01) un portu 8888. Visa satiksme no šīs programmas tiktu novirzīta caur tuneli.
Lai to izdarītu programmā Windows, izvēlieties Savienojums> SSH> Tuneļi. Izvēlieties opciju “Dynamic”. “Avota portam” ievadiet vietējo portu.
Piemēram, ja jūs vēlaties izveidot SOCKS starpniekserveri portā 8888, ievadāt to 8888
kā avota portu. Pēc tam noklikšķiniet uz "Pievienot" un pēc tam noklikšķiniet uz "Atvērt", lai atvērtu SSH savienojumu. Pirms savienojuma, protams, galvenajā “Sesijas” ekrānā jāievada arī SSH servera adrese un ports.
Pēc tam varat konfigurēt lietojumprogrammu, lai piekļūtu SOCKS starpniekserverim vietējā datorā (ti, IP adrese 127.0.0.1, kas norāda uz jūsu vietējo datoru) un norādiet pareizo portu.
Piemēram, varat konfigurēt Firefox, lai izmantotu SOCKS starpniekserveri. Tas ir īpaši noderīgi, jo Firefox var izmantot savus starpniekservera iestatījumus un tai nav jāizmanto sistēmas starpniekservera iestatījumi. Firefox nosūtīs savu datplūsmu caur SSH tuneli, savukārt citas programmas parasti izmantos jūsu interneta pieslēgumu.
Veicot to Firefox, izvēlieties “Manuālā starpniekservera konfigurācija”, ievadiet “127.0.0.1” SOCKS resursdatora lodziņā un ievadiet dinamisko portu lodziņā “Port”. Atstājiet HTTP Proxy, SSL Proxy un FTP Proxy kastes tukšu.
Tunelis paliks aktīvs un atvērts tik ilgi, kamēr ir atvērts SSH sesijas savienojums. Beidzot SSH sesiju un atvienojoties no servera, tunelis tiks aizvērts. Vienkārši pievienojiet savienojumu ar atbilstošu komandu (vai atbilstošām opcijām PuTTY), lai atsāktu tuneli.