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 “aktoró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 “Porty 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 “background”.

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