SSH Tunneling Agar Server Lokal dapat Diakses Lewat Publik
Di tutorial ini saya akan sharing sedikit mengenai bagaimana cara setup SSH Tunneling dengan tujuan agar server lokal kita bisa diakses melalui publik. Di kasus yang saya alami, saya membutuhkan tunneling ini agar saya bisa mengakses server Raspberry pi saya dari luar jaringan. Beruntung ada VPS pribadi dengan IP publik yang bisa saya gunakan sebagai "gateway" untuk masuk ke Raspi.
Agar tidak bingung lebih baik langsung saya kasih contoh saja. Disini saya memiliki:
- Server Raspberry Pi di IP Lokal 192.168.1.26
- Satu VPS dengan IP publik untuk keperluan remote forwarding. (Disini anggap saja servernya saya beri nama servertunneling).
Pertama, kita perlu memodifikasi beberapa bagian di servertunneling agar mengijinkan port forwarding.
ssh user@servertunneling -p 22
Selanjutnya modifikasi file sshd_config
sudo nano /etc/ssh/sshd_config
Edit baris AllowTcpForwarding dan GatewayPorts bernilai yes.
AllowTcpForwarding yes
GatewayPorts yes
Nah, sebenarnya yang akan kita gunakan disini adalah remote SSH tunneling yang pernah saya tulis juga tutorialnya disini:
Cara Menggunakan SSH Tunneling di GNU/Linux
Namun, agar tunneling nya stabil, disini kita memiliki beberapa opsi. Pertama, menggunakan AutoSSH, kedua langsung membuat daemon process.
Namun sebelum itu, kita setting dulu di server local (server Raspberry Pi) agar login ssh ke servertunneling menggunakan key.
ssh pi@192.168.1.26
Lalu dari Raspberry Pi kita setting ssh keygen nya.
ssh-keygen -t rsa -b 4096
Pasang ssh key ke servertunneling.
ssh-copy-id user@servertunneling -p 22
Jika kalian memilih opsi menggunakan AutoSSH, langsung ikuti saja jalankan command berikut:
autossh -M 0 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 6969:localhost:22 -i ~/.ssh/id_rsa user@servertunneling -p 22
Selesai. Kalian bisa mengakses server Raspberry Pi melalui servertunneling port 6969.
Namun jika kalian lebih memilih membuat daemon process (disini saya akan contohkan implementasinya di systemd), juga tidak masalah.
Membuat Daemon Process dengan Systemd
Untuk systemd, buat service baru di direktori /etc/systemd/system/. Anggap disini saya buat dengan nama remote-tunnel.service
sudo nano /etc/systemd/system/remote-tunneling.service
Lalu isinya:
[Unit]
Description=SSH Tunneling Daemon
After=network.target
StartLimitIntervalSec=0[Service]
ExecStart=/usr/bin/ssh -i /home/nino/.ssh/id_rsa -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -nNT -R 2525:localhost:22 user@servertunneling -p 22
Restart=always
RestartSec=3[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable remote-tunneling
sudo systemctl start remote-tunneling
Untuk memeriksa status servicenya bisa gunakan perintah
sudo systemctl status remote-tunneling
Sekarang kita cek di servertunneling, seharusnya prosesnya sudah listen di port 6969.
Sekarang kita coba akses Raspberry Pi lewat IP VPS kita, di port 6969
ssh pi@servertunneling -p 6969
Oke mungkin sekian tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.
1 komentar untuk "SSH Tunneling Agar Server Lokal dapat Diakses Lewat Publik"
Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.