Někdy potřebujeme přenášet data přes soket mezi různými stroji, jako je připojení Telnet, stahování souborů FTP, dotaz SQL nebo jakýkoli jiný typ přenosu.
Tato data cestují surová sítí, takže nejistá, což znamená, že by je mohl zachytit jakýkoli uzel, který je na cestě mezi počátkem a cílem, tj. ukradený.
Nemůžeme zabránit tomu, aby byla tato data zachycena, ale můžeme zabránit tomu, aby byla interpretována a srozuměna třetími stranami a šifrováním komunikace.
SSH je nástroj, který nám to umožňuje zabezpečené připojení mezi stroji. Jeho nejběžnějším použitím je vzdálené připojení k tlumočníkovi příkazů.
Nabízí však i jiné možnosti, například tvorbu šifrované tunely mezi různými stroji.
Předpokládejme, že chceme telnetovat z hostitele1 na hostitele2:
host1$ telnet host2
Tato komunikace je zcela otevřená a může být zachytil. Abychom jej chránili, přesměrujeme libovolně zvolený port (například 5000) na hostiteli 1 na port 23 (telnet) na hostiteli2.
Tímto způsobem dostaneme všechna data odeslaná na port 5000 hostitele1, abychom šifrovali cestování přes tunel, který ssh otevírá přes port 22 hostitele2, a poté budeme přesměrováni na port 23 hostitele2, čímž dosáhneme svého konečného cíle.
K tomu potřebujeme znát uživatelské jméno a heslo hostitele2.
Pro otevření tunelu píšeme:
host1$ ssh -R 5000:localhost:23 usuariohost2@host2
Dobře:
host1$ ssh -L 5000:host2:23 usuariohost2@host2
Obě možnosti jsou ekvivalentní. K navázání připojení telnet již neodkazujeme na hostitele2, ale na port vybraný na hostiteli1:
host1$ telnet localhost 5000
Díky tomu zajišťujeme veškerou komunikaci bezpečnou, ať už telnetovou nebo jinou. Vyšetřujeme trochu víc a uvidíme, že díky síle SSH Tato přesměrování lze provést i na třetí stroje, což by nám umožnilo, že s jediným vstupním bodem bychom mohli bezpečně přistupovat z celé LAN do jiné LAN.
Tato teorie vypadá mimořádně zajímavě, ale bylo by to ještě více, kdybychom viděli praktický případ.
Ale pravdou je, že i když jsem byl malý, miloval jsem ten článek.
možná při pohledu na wiki se necháte inspirovat https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
a to samé, ale autossh sekce https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
Ve skutečnosti vše, co můžete odeslat pomocí ssh, ať už je to streamování, připojení k hostiteli. atd. že z x důvodu je chcete zašifrovat.
a pravidla securecrt
Někdy používám SSH na velmi základní úrovni. Výchozí port je 22, že?
Pokud tedy dobře rozumím, můj počítač je hostitel 1 a ten, který se chci připojit k hostiteli2, by tento tunel vytvořil spojení mezi portem 5000 a jeho portem 23 a pak by skončil na portu 22?
Proč důvody pro přepínání portů? Můžete vytvořit tunel s portem 22?
Velmi zajímavý článek. Jako nano chci víc!
SSH ve výchozím nastavení skutečně používá port 22 (i když jej lze změnit). Tento port je ten, který by byl použit při skutečné komunikaci mezi dvěma hostiteli. Je to ten, u kterého se musíte ujistit, že je otevřený a žádný firewall jej nepřerušuje. Ale pro uživatele je zcela transparentní. Můžete na něj zapomenout. V tomto příkladu je přesměrování mezi porty 5000 23 a 5000. Tyto dva jsou jediné, kterých se musíte obávat. Uživatel uvidí, že vše, co pošle na port 23 XNUMX svého hostitele, se objeví na XNUMX cílového hostitele.
Je zřejmé, že každý uživatel může přesměrovat porty, které považuje za vhodné.
Děkuji za vaše komentáře. Toto je můj první příspěvek a vaše názory pomohou vylepšit další.
Lze to udělat také s VPS?
Dobře, to je můj případ, PC1 má přístup k serveru, ale PC2 ne, oba se připojují pomocí ssh, chci mít přístup v PC2, ale který port PC1 přesměrovat? pokud ve skutečnosti to, co chci, je dosáhnout portu serveru z PC2 a že pakety mají jako zdrojovou IP adresu PC1. rozumím?
Dáte tomu porozumět. V tomto případě potřebujete PC1 k přesměrování portu PC2 na port 22 serveru:
PC2 $ ssh -L 5000: Server: 22 uživatelů PC1 @ PC1
a při zachování tohoto připojení otevřeného z jiného terminálu:
PC2 $ ssh userServer @ localhost -p 5000
a už jsi uvnitř.
Konečně funkční řešení !! Děkuji Getafix, dal jsi mi svět možností !!
Jsem rád!
Výborný článek. Vítejte v DesdeLinux ????
A co dělat, když máme 22 blokovaných? LOL ..
Díky elav.
Pokud máte zablokovaný port 22, mmmm, budeme muset hledat alternativu k hacknutí XD firewallu
A nejhorší ze všeho (hypotetické): že je blokován poskytovatelem VPS.
Právě jsem před pár hodinami udělal zkoušku s otázkami o ní 😛
Neřekl bych, že:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
je ekvivalentní s druhým příkazovým řádkem ... příkazem s -L.
Protože -R označuje, že port, který je otevřen pro nová připojení, je na vzdálené straně, tj. Na straně vašeho ssh serveru; zatímco -L otevírá port na místní straně, na straně klienta pro příjem nových připojení.
Překlad řádku:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
Bylo by to něco takového: Být na hostiteli1, připojit se k serveru ssh (port 22) hostitele s mým uživatelem userhost2 a předat připojení vygenerovaná na vzdáleném portu 2 hostitele na port 5000 na host2 (můj localhost)
Pokud ne, opravte mě! 😉
-
Na druhou stranu ... pokud server zablokoval vstup připojení na port 22, to znamená, že se nemůžeme vzdáleně připojit k serveru ssh; co lze udělat, je; že ze serveru (přítel sysadmin za firewallem vzdáleného systému host2) je spuštěn příkazový řádek:
host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1
-f přejde na pozadí
-N neprovede na dálkovém ovladači žádný příkaz
nohup zabrání přerušení provádění příkazu při odhlášení
host1 $ ssh userhost2 @ localhost -p 6000
Tímto způsobem z hostitele 1 vygenerujeme připojení k localhost (stejný hostitel1) na portu 6000, které předá připojení na port 22 vzdáleného systému host2, ve kterém se přihlásíme pomocí uživatele host2.
To by umožnilo (netestoval jsem to, ale zní to, jako by to fungovalo) přihlásit se na ssh server blokovaný firewalem s malou pomocí zevnitř! 😀
Ten druhý jsem četl z vysvětlení v časopise The Geek Stuff
http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/
Opravdu se mi líbí vaše publikace; Četl jsem je často!
Zdravím.
Máš pravdu. V článku je chyba. Přesměrování není ekvivalentní. Příkaz host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 provede reverzní přesměrování, to znamená, že přesměruje vzdálený port 5000 na 23 místních, což je opak toho, co příkaz s -L.
Děkuji za opravu.