Belum lama ini saya berdiskusi dengan kawan saya yang kebetulan di terminalnya terpasang sangat banyak ssh tunnel ke banyak mesin yang di kerjakannya.
Saking banyaknya port yang di mapping sampai-sampai dia membuat table untuk mencari tahu port berapa yang di mapping ke port berapa.
Teknik yang digunakan oleh kawan saya ini bisa di padankan dengan perintah ssh sebagai berikut
ssh -f user@jumphost -L 2021:192.168.100.1:22 -N
Yang artinya, ssh ke jumphost dengan username user, buat port 2021 di localhost yang kalau port 2021 tersebut dipanggil maka akan membuka koneksi ke ip 1982.168.100.1 port 22. Dengan cara ini kawan saya bisa melakukan ssh ke ip 192.168.100.1 pada port standar ssh yaitu port 22 dengan menggunakan perintah
ssh -p 2021 user@localhost
Bila perintah pertama dilakukan untuk banyak mesin dengan port berbeda-beda maka hasilnya seperti nampak pada ilustrasi dibawah ini
Tentu kalau jumlah mesin dan port yang akan di mapping sedikit tidak masalah. Tapi bagaimana kalau jumlahnya mencapai ratusan ?
Mari kita coba cara yang lebih mudah.
Saya memilih menggunakan fitur untuk sock proxy yang tersedia pada ssh
ssh -D 9054 user@jumphost
Artinya, ssh ke jumphost dan buat sock proxy di localhost pada port 9054
Kemudian saya menggunakan ssh dengan bantuan tools nc seperti ini
ssh -o ProxyCommand=’nc -x localhost:9054 %h %p’ user@192.168.100.1
Arti perintah diatas adalah ssh yang diantarkan oleh tools nc ke alamat proxy localhost dan port 9054, dengan username user dan ip yang akan di ssh adalah 192.168.100.1. Sedangkan %h berarti host dan %p adalah port (dapat dilihat referensinya pada manual ssh dibagian proxycommand).
Untuk browser dapat dengan mengaktifkan sock proxy ke localhost port 9054 atau menggunakan command line
chromium –proxy-server=”socks5://127.0.0.1:9054″
selanjutnya jelas akan lebih mudah, saya tidak perlu menghafalkan port mana untuk menghubungkan ke mesin mana dan port yang mana.