Ferex Blog

czyli coś o niczym

Tunelowanie SSH - czyli jak udostępnić serwer www w sieci i każdy inny

Napisano przez Ferex dnia 20-12-2017

Jak ma się dużą ilość osób na moim kanale xmpp to zawsze można się czegoś od innych dowiedzieć. Ostatnio Bonn333 pokazał mi coś o czym jeszcze nie wiedziałem, a dokładnie pokazał mi sposób na tunel po protokole SSH.
Zapewne już ktoś powie, że ten sposób jest znany od dawna, no bo faktycznie, sam używam tego do tunelowania ruchu na moim serwerze, choć Bonn333 wykazał się czymś innym.

Za dzisiejszy przykład weźmy sobie serwer WWW nasłuchujący na porcie 80 i uruchomiony na maszynie lokalnej (np. komputer, laptop), oraz serwer vps/shell na którym mamy otwarty port 8881.
Teraz prosimy właściciela serwera shellowego lub vpsa (o ile my nimi nie jesteśmy) o to by w pliku /etc/ssh/sshd_config została odkomentowana linia 88 (u mnie taka właśnie jest) w której znajduje się "GatewayPorts" i wartość no została zmieniona na yes.
Teraz finalnie wystarczy zrestartować serwer ssh i z naszego komputera czy laptopa połączyć się z serwerem za pomocą programu PuTTy dla Windowsa lub poprzez wydanie polecenia ssh dla Linuxa: ssh -NC -R 1.2.3.4:8881:127.0.0.1:80 user@1.2.3.4

Dla Windowsa:




Od tego momentu Wasz serwer WWW na laptopie będzie widoczny w internecie pod adresem http://1.2.3.4:8881
Mam nadzieję, że pomogłem zrozumieć jak to działa

PS. Jeżeli w PuTTy źle coś zrobiłem to napiszcie mi o tym bo ja używam tylko Linuxa
PS.2. Komentarz Bonn333: https://www.andrzejszczepaniak.co.uk/notes.php?id=13#comment-3674352458

===== Aktualizacja notki =====

Przez to, że notka nie jest dla niektórych dość przejrzysta to postanowiłem ją z lekka poprawić na przykładzie serwera vps w Aruba Cloud.
Aby zacząć należy zakupić serwer vps w Aruba Cloud (za 4zł + VAT = 4,92zł wystarczy), a następnie zalogować się na konto root.

Teraz na naszym komputerze czy na jakimkolwiek urządzeniu musimy zrobić klucze ssh, więc na Linuxie wydajemy polecenie:

ssh-keygen -b 4096

Kiedy poprosi nas o podanie ścieżki to podajemy katalog w którym chcemy by klucze się znalazły, gdzie w moim przypadku jest to: /home/user/.ssh/
Na Windowsie używamy do tego oczywiście programu puttygen.

Kiedy już na serwerze vps zmienimy odpowiednią linijkę (podaną powyżej) i go zrestartujemy to teraz można zgrać klucz publiczny na serwer i go dopisać do pliku authorized_keys (instrukcja podana dla Linuxa):

Na laptopie/rasberce:

scp /home/user/.ssh/id_rsa.pub root@ip:/root/.ssh/id_rsa.pub

Na serwerze:

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

Dla Windowsa robimy tak, że generujemy klucz w puttygen, następnie kopiujemy to co wyświetli puttygen, logujemy się na serwer za pomocą putty i dopisujemy do wyżej podanego pliku (/root/.ssh/authorized_keys) zawartość z puttygen, a klucze zapisujemy na pulpicie.

Teraz aby się połączyć z serwerem wpisujemy na Linuxie komendę podaną wyżej z dopiskiem -i /sciezka/do/klucza, zaś na Windowsie w programie PuTTy w Connection->SSH->Auth podajemy klucz i zapisujemy połączenie, a następnie logujemy się na serwer z udostępnionym portem na zewnątrz.

Na Linuxie można jeszcze zrobić taki myk, że zrobić plik /usr/bin/remote i w nim zrobić taki wpis:

#!/bin/bash
ssh -i /home/user/.ssh/id_rsa -NC -R 1.2.3.4:8881:127.0.0.1:80 user@1.2.3.4

Teraz tylko należy wydać polecenie chmod +x /usr/bin/remote i zawsze po włączeniu laptopa/komputera czy rasberki wydać polecenie remote by z automatu połączyło z serwerem vps.

~~~~ Komentarze ~~~~