Po艂膮czenie z Mikrusa do lokalnego serwera

馃挕 Autorem poradnika jest Krzysztof Romanowski

Serwer Mikrusa mo偶esz wykorzysta膰 do po艂膮czenia si臋 do swojego lokalnego serwera i nie potrzebujesz w tym celu stawia膰 us艂ugi typu VPN.

Je艣li masz dynamiczne IP, to wiesz, 偶e nie mo偶esz polega膰 na adresie IP. Wtedy przyda Ci si臋 tzw. tunelowanie SSH.

Rozwi膮zanie jest proste: to Tw贸j serwer czeka na nawi膮zanie po艂膮czenia z konkretnym portem, a Tw贸j domowy komputer (ze zmiennym IP) 艂膮czy si臋 do Mikrusa (kt贸ry ma sta艂e IP).

Jest wiele opcji tunelowania SSH, mo偶esz o nich poczyta膰 w artykule podlinkowanym w Bibliotece wiedzy, tutaj om贸wi臋 tylko jedn膮 z nich; Remote port forwarding.

Wyszczeg贸lnijmy trzech 鈥渁ktor贸w鈥:

  • mikrus - Tw贸j serwer VPS
  • local server - Tw贸j lokalny serwer, do kt贸rego chcesz si臋 dosta膰 za po艣rednictwem Mikrusa
  • remote machine - maszyna w sieci, z kt贸rej chcesz si臋 po艂膮czy膰 do lokalnego serwera, przez Mikrusa

Wygl膮da to tak:

remote 馃捇 鈫 mikrus 鈫 local 馃枼锔

Klucze SSH

Po pierwsze musisz posiada膰 dwa klucze SSH:

  • do po艂膮czenia si臋 do Mikrusa
  • do po艂膮czenia si臋 do Lokalnego serwera

Mo偶esz je wygenerowa膰 poleceniem:

ssh-keygen -t rsa

Dla u艂atwienia po艂膮czenia mo偶esz pomin膮膰 ustawianie has艂a dla tych kluczy.

Zapisz je pod nazwami mikrus i local_server.

Wgraj klucze na serwery

Przygotowane wcze艣niej klucze zapisz w odpowiednie miejsca:

mikruslocal serverremote machine
Klucz mikrus.pub wgraj przez https://mikr.us/panel w sekcji Klucze SSHKlucz mikrus (prywatny) zapisz w ~/.ssh, a klucz local_server.pub dodaj do ~/.ssh/authorized_keysKlucz local_server (prywatny) zapisz w ~/.ssh

Zmiany na Mikrusie

Na pocz膮tku trzeba doda膰 par臋 opcji w konfiguracji serwera ssh. Mo偶esz u偶y膰 do tego nano:

nano /etc/ssh/sshd_config

Dodaj (albo odnajd藕 i odkomentuj) te linijki:

GatewayPorts yes
ClientAliveInterval 30
ClientAliveCountMax 3

Po tej zmianie zrestartuj serwer SSH:

systemctl restart sshd

Zmiany na lokalnym serwerze

Je艣li masz wgrane klucze SSH, to sprawa jest prosta, jedna linijka w terminalu:

ssh -NR [jeden_z_dodatkowych_port贸w]:localhost:22 root@[adres_mikrusa] -p [podstawowy_port_ssh] -i ~/.ssh/mikrus

# Przyk艂ad
ssh -NR 20310:localhost:22 root@srv16.mikr.us -p 10310 -i ~/.ssh/mikrus

gdzie:

  • [jeden_z_dodatkowych_port贸w] - Mikrus daje Ci do dyspozycji dwa dodatkowe porty TCP/UDP, mo偶esz je odnale藕膰 w swoim panelu w sekcji 鈥淧orty TCP鈥
  • [adres_mikrusa] - to nazwa serwera, na kt贸rym znajduje si臋 VPS, czyli np. srv16.mikr.us
  • [podstawowy_port_ssh] - podstawowy port SSH, jaki dosta艂e艣 po kupnie Mikrusa

Utrzymywanie po艂膮czenia

Jedn膮 z rzeczy, kt贸re mo偶esz zrobi膰, aby jak najd艂u偶ej podtrzyma膰 po艂膮czenie, jest dodanie dw贸ch linijek w konfiguracji klienta ssh (nie serwera! inny plik ni偶 na Mikrusie!):

sudo nano /etc/ssh/ssh_config

Dodaj (albo odnajd藕 i odkomentuj) te linijki:

ServerAliveInterval 30
ServerAliveCountMax 3

Po tej zmianie zrestartuj serwer SSH:

sudo systemctl restart sshd

Automatyczne utrzymywanie po艂膮czenia

O ile to, co ustawi艂e艣 dotychczas, powinno utrzyma膰 po艂膮czenie na d艂ugo, o tyle jak zrestartujesz serwer, to wszystko b臋dziesz musia艂 zaczyna膰 od nowa. Jest na to spos贸b, autossh, kt贸ry utrzymuje po艂膮czenie i wznawia je, je艣li jest taka potrzeba.

Po zainstalowaniu aplikacji autossh mo偶esz u偶y膰 polecenia:

sudo autossh -M 0 -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" -NR [jeden_z_dodatkowych_port贸w]:localhost:22 root@[adres_mikrusa] -p [podstawowy_port_ssh] -i ~/.ssh/mikrus

# Przyklad
sudo autossh -M 0 -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" -NR 20310:localhost:22 root@srv16.mikr.us -p 10310 -i /home/admin/.ssh/mikrus

Dodatkowo, je艣li dodasz opcj臋 -f, autossh wejdzie w 鈥渂ackground鈥.

Dobr膮 opcj膮 jest skonfigurowanie autossh tak, 偶eby startowa艂 razem z systemem. Aby to zrobi膰, kieruj si臋 tym artyku艂em.

Zmiany na komputerze zdalnym

Je艣li wszystko skonfigurowa艂e艣 poprawnie, powiniene艣 m贸c po艂膮czy膰 si臋 do Twojego lokalnego serwera w ten spos贸b:

ssh [nazwa_usera_na_lokalnym_serwerze]@[adres_mikrusa] -p [jeden_z_dodatkowych_port贸w] -i ~/.ssh/local_server

# Przyklad
ssh admin@srv16.mikr.us -p 20310 -i ~/.ssh/local_server

gdzie:

  • [nazwa_usera_na_lokalnym_serwerze] - np. admin
  • [adres_mikrusa] - jak w poprzednim paragrafie
  • [jeden_z_dodatkowych_port贸w] - port, kt贸ry wybra艂e艣 do tunelowania

Powr贸t do strony g艂贸wnej