Belső szerver elérés publikus szerveren keresztül
Adott egy Raspberry pi, ami egy belső hálózaton csücsül, dinamikus ip-vel kapcsolódik és nincs mód kiengedni a világ
felé.
A most következő módszernek a hátulütője, hogy szükség van egy kívülről elérhető szerverre, amire SSH-n keresztül
csatlakozhat a pi és mi a köztes szerveren keresztül a pi-re.
A távoli hozzáféréshez nincs másra szükség, mint az SSH-ban található Port Forward beállítására. A külső szerverre csatlakozás során be kell állítani, hogy a lokális 22 port a távoli szerveren legyen elérhető például a 6666 porton. A folyamatos kapcsolathoz telepíteni kell az autossh programot és hogy az újraindítással se legyen gond, kell egy systemd service.
Autossh telepítés⌗
Ubuntu⌗
sudo apt-get install autossh
Arch⌗
sudo pacman -S autossh
Távoli ssh csatlakozás jelszó nélkül⌗
Az automatikus csatlakozáshoz elengedhetetlen, hogy ne kelljen mindig beírni a távoli felhasználó jelszavát.
Az itt leírtak alapján generáljunk hozzáférést. A kulcshoz tartozó passprhase legyen üres.
Autossh script⌗
A könnyeb hivatkozásért készítsünk egy bash scriptet az autossh futtatáshoz.
# !/bin/bash
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i ~/.ssh/id_rsa -R 6666:localhost:22 user@example.com
Az utolsó paramétert le kell cserélni a tényleges felhasználónévre és a szerver címére.
Systemd service⌗
Hogy ne kelljen minden indítás után bejelentkezni és elindítani a scriptet, készítsünk egy systemd service-t:
[Unit]
Description=AutoSSH
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
User=user
ExecStart=/bin/bash /home/user/.scripts/autossh.sh
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
Az User és ExecStart-ban le kell cserélni a felhasználót a megfelelőre.
A fájl legyen futtatható:
chmod +x home/user/.scripts/autossh.sh
Engedélyezzük, hogy automatikusan induljon és indítsuk el:
sudo systemctl enable autossh
sudo systemctl start autossh
Csatlakozás⌗
A csatlakozáshoz vagy két lépcsőben először bejelentkezünk a köztes szerverre és onnan a másikra vagy használhatjuk a következő parancsot:
ssh -o ProxyCommand="ssh -W %h:%p user@example.com" -p 6666 user@localhost