SSH Tunneling Agar Server Lokal dapat Diakses Lewat Publik

Minggu, 29 November 2020

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

Sebenarnya kalian juga bisa memasang proses autossh di systemd namun saya pikir itu tidak lagi diperlukan karena meski proses tunneling mengalami timeout, proses tunneling akan direstart oleh service systemd.

Oke lanjut, reload systemd agar service yang baru dibuat dikenali.
sudo systemctl daemon-reload
Lanjut enable service
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.

Artikel Terkait Linux ,Server