SSH tuneļa izveide
Saturs
- Vispārīgs apraksts
- Tuneļa plūsmas pārsūtīšana turp
- Tuneļa plūsmas pārsūtīšana atpakaļ
- Kļūdu novēršana
- SOCKS tuneļa izveide
- Tuneļa izveide ar putty
- Saites
Vispārīgs apraksts
Visiem datoriem, ieskaitot serverus ir vismaz divas tīkla saskarnes (interfeisi):
- Lokāla "atcilpa", ar IP adresi 127.0.0.1 un nosaukumu localhost, kas pieejams tikai uz tā paša datora ejošām programmām
- Publiskā saskarne, kas pievienota fiziskam tīklam un ko var sasniegt citi internetam pieslēgtie datori. Uz Unix/Linux datoriem tā parasti ir eth0 (vai ar citu numuru).
Publiski pieejamie servisi (Apache tīmekļa serveris, OpenSSH serveris) klausās (un atbild) gan lokālo, gan publisko saskarni, bet lokālie servisi (MySQL vai PostgreSQL datu bāzes serveri, Tomcat tīmekļa lietojumu serveris) klausās (un atbild) tikai uz lokālo saskarni.
Par to var pārliecināties, ievadot komandu:
parādās sekojoša aina:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8180 0.0.0.0:* LISTEN
...
tie servisi, kuriem adrese Local Address norādīta kā 127.0.0.1* ir pieejami tikai no paša servera caur lokālo saskarni, savukār tie servisi, kuriem norādīta adrese *0.0.0.0, ir pieejami no visām tīkla saskarnēm.
No augšminētā piemēra izriet, ka uz servera ir pieejami sekojoši servisi:
Serviss | Ports | Pieejams |
MySQL | 3306 | Lokāls |
Apache HTTP | 80 | Publisks |
SSH | 22 | Publisks |
Apache HTTPS | 443 | Publisks |
Tomcat | 8180 | Lokāls |
Tuneļa plūsmas pārsūtīšana turp
SSH klients un serveris nodibina šifrētu datu kanālu, un, nododot klientam un serverim īpašas komandas, tie pārraida viens otram lokāli nosūtītus datus, lokālo datu sūtītājiem radot ilūziju, ka dati kursē viena datora robežās. Vispārīgā datu pārraides shēma ir parādīta sekojošā zīmējumā.
Standarta pārsūtīšanas paņēmiens ir nosūtīt no lokālā datora saņemto datu plūsmu uz SSH servera un tālāk, to norādot merkadators:
ssh -L AAA:merkadators:BBB user@talaisdatorskur:
- -L norāda, ka caur ssh nepieciešams pārsūtīt portus no mansdators uz merkadators
- AAA ir lokālā (lietotāja) datora porta numurs, kuram slēgsies klāt lietojumprogramma. Ja komandu nevar izpildīt kā root, šis ports jāņem >1024.
- merkadators ir resursdatora nosaukums, uz kuru datu plūsmu tālāk pārsūtīs ssh serveris (talaisdators). Merkadators vispār var būt jebkurš cits dators, kuru "redz" talaisdators. Ja mērķa dators ir tas pats ssh serveris (talaisdators), norāda localhost.
- BBB ir mērķa datora porta numurs
- user ir ssh servera lietotāja vārds, ja tas sakrīt ar patreizējo lietotāju, user@ var nenorādīt, un atstāj tikai talaisdators
- ja SSH serveris atbild uz nestandarta portu, norāda papildus parametru: -p PortaNr
- talaisdators ir ssh servera nosaukums vai publiskā IP adrese.
Pēc tam atver konkrēto lietojumprogrammu un kā mērķi norāda sava lokālo datoru un portu AAA. Šī datu plūsma tiks noraidīta uz merkadators:BBB portu
Ja vēlas izmantot tuneli arī no citiem datoriem, kas "redz" mansdators iekšējo IP adresi, tad pirms lokālā porta numura pieliek zvaigznīti:
Ja nepieciešams pārsūtīt avota portus, kas mazāki par 1024, komanda jāpilda kā root lietotājam, sākot komandu ar sudo, piemēram:
Lai tunelētu VmWare konsoles plūsmu, izpilda komandu:
ssh -L 9001:mansdators:901 valdis@talaisdatorsLai tunelētu mansdators 80 porta plūsmu uz google, izpilda komandu:
ssh -L 8080:www.google.lv:80 valdis@talaisdators
Tuneļa plūsmas pārsūtīšana atpakaļ
Pretēju plūsmu nodrošina ar komandu:
sudo ssh -R AAA:merkadators:BBB user@talaisdatorskur:
- -R norāda, ka caur ssh nepieciešams pārsūtīt no talaisdators uz merkadators
- AAA ir ports, uz kuru klausīsies talaisdators. Ja porta numurs mazāks par 1024, tad jābūt *root lietotājam (un var būt, ka tā pieteikties ir uz tālā datora ir aizliegts!).
- merkadators ir resursdatora nosaukums, uz kuru datus nosūtīs reversā tuneļa sākumā. Tas var būt localhost vai kāds cits dators iekšējā tīklā.
- BBB ir merkadators datora porta numurs, uz kuru nosūtīs datus reversā tuneļa sākumā.
- user ir ssh servera lietotāja vārds, ja tas sakrīt ar patreizējo lietotāju, user@ var nenorādīt, un atstāj tikai talaisdators
- talaisdators ir attālinātā ssh servera nosaukums vai IP adrese
Piemēram, lai padarītu par pieejamu iekšējā tīkla datora tīmekļa serveri ar adresi 192.168.1.1, ievada komandu:
ssh -R 8001:192.168.1.1:80 user@talaisdatorsLai tuneļa sesiju atstātu fonā, komandu papildina ar slēdžiem -Nfq, piemēram:
ssh -NfqR 2222:localhost:22 valdis@111.222.333.444Piemēram, ja ir darbstacijai, kas atrodas privātā tīklā aiz ugunssienas (darba datoram), pa tiešo tai pieslēgties ar SSH no mājas datora nav iespējams. Tomēr, ja mājas datoram ir publiska IP adrese, to var izdarīt, izveidojot reverso SSH tuneli:
ssh -R 2222:localhost:22 111.222.333.444kur 111.222.333.444 ir mājas datora publiskā IP adrese.
Tagad mājas datoram var pieslēgties attālināti no cita datora:
ssh 111.222.333.444
Kļūdu novēršana
Lai padarītu publiskus visus tuneļus, kā root lietotājs /etc/ssh/sshd_config pievieno rindu:
GatewayPorts yesvai
Lai padarītu publiskus tikai norādītos tuneļus, kā root lietotājs /etc/ssh/sshd_config pievieno rindu:
GatewayPorts clientspecifiedizveidotajiem tuneļiem sākumā norāda klausāmās adreses, piemēram: -R *:2222:localhost:22 vai -R 10.0.0.10:2222:localhost:22
pārstartē ssh serveri:
sudo /etc/init.d/ssh restart
SOCKS tuneļa izveide
Izmantojot SOCKS tīkla ligzdas, var nosūtīt šifrētu tīkla plūsmu uz citu datoru, lai tas darbotos lokālā datora vietā. Ievadot komandu:
ssh -D3128 111.222.333.444- uz lokālā datora porta ir izveidota ligzda, caur kuru var nosūtīt, piemēram HTTP pieprasījumus. Tīmekļa pārlūkprogrammā norāda, ka starpniekserveris ir lokālais dators ar portu 3128, un ka tas izmanto SOCKS4/5 protokolu (vai "soketus").
Tuneļa izveide ar putty
- Atver Putty un izvēlas iestatījumus Connection- SSH- Tunels:
- Laukā Source port norāda portu, uz kuru putty klausīsies, piemēram, 3306*, laukā *Destination norāda mītni (attiecībā pret mērķa datoru) un portu, uz kurieni tunelētā plūsma tiks pārsūtīta, piem., localhost:3306:
- Spiež pogu Add:
- Ja vēlas, var pievienot papildu tuneļus:
- Pieslēdzas izvēlētajam mērķa datoram.
Saites
- Pastāvīga tuneļa izveide ar OpenVPN
- http://linuxers.org/article/reverse-ssh-tunneling-bypassing-firewalls-and-nat
Created by Valdis Vītoliņš on 2010-01-21 15:31
Last modified by Valdis Vītoliņš on 2023-01-24 22:41