Dengan akses SSH yang diizinkan ke server, OpenSSH dapat membuat listener SOCKS di komputer Anda. Koneksi SSH membawa lalu lintas yang diteruskan, dan server jauh membuat koneksi ke tujuan.

Listener khusus loopback

ssh -N -T -o ControlPath=none -o ForkAfterAuthentication=no -o ExitOnForwardFailure=yes -D 127.0.0.1:1080 [email protected]

Ganti akun dan nama host. Server SSH harus mengizinkan penerusan; administrator dapat membatasi penerusan dan tujuan secara terpisah dari login akun.

-D membuat penerusan dinamis, dan alamat loopback eksplisit membatasi listener ke komputer ini. -N tidak menjalankan perintah jauh; -T tidak menyediakan pseudoterminal. ControlPath=none menghindari master berbagi koneksi yang sudah ada, sedangkan ForkAfterAuthentication=no mempertahankan pemanggilan ini di latar depan.

Biarkan proses berjalan saat memakai proxy. Jika port 1080 terpakai, pilih port tinggi lain yang kosong dan perbarui klien. ExitOnForwardFailure=yes membuat SSH keluar jika listener tidak dapat dibuat.

Menggunakan endpoint SOCKS

curl --proxy socks5h://127.0.0.1:1080 --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/

Permintaan ini mendelegasikan penanganan nama tujuan melalui SOCKS5. Aplikasi lain memerlukan konfigurasi SOCKS sendiri; kolom proxy HTTP tidak dapat berbicara SOCKS ke listener ini.

Untuk memeriksa proses pemilik port:

ss -ltnp 'sport = :1080'

Proses SSH yang dimaksud seharusnya memiliki listener loopback. Permintaan melaluinya menguji apakah server jauh juga mencapai target. Gunakan tujuan yang Anda kendalikan untuk memeriksa alamat keluar yang diamati.

Masa hidup sesi

Ctrl-C menutup proses SSH, listener, dan koneksi penerusan. Putusnya koneksi SSH juga membuat proxy tidak tersedia.

ExitOnForwardFailure memeriksa tahap penyiapan. Opsi itu tidak mengakhiri SSH setiap kali koneksi tujuan berikutnya gagal, jadi diagnosis sesi, port lokal, dan permintaan tujuan secara terpisah.

Artikel terkait