Terowongan SSH di atas banyak hop menggunakan dempul

13

Saya memiliki situasi di mana saya ingin terhubung ke mesin Linux yang menjalankan VNC (sebut saja VNCServer) yang berada di belakang dua mesin Linux berturut-turut yaitu, untuk ssh ke VNCServer, saya harus ssh ke Gateway1 dari laptop saya, kemudian dari shell Gateway1 Saya ssh ke Gateway2 dan kemudian dari shell itu saya akhirnya ssh ke VNCServer. Saya tidak dapat mengubah desain jaringan dan aliran akses Laptop -> Gateway1 -> Gateway2 -> Server. Saya tidak memiliki hak akses root pada Gateway1 dan semua port kecuali 22 dan 5901 ditutup.

Apakah ada cara di mana saya dapat meluncurkan VNC viewer di laptop saya dan mengakses VNCServer? Saya mengerti bahwa itu mungkin dilakukan dengan menggunakan fitur ssh tunneling dan saya memiliki dempul pada laptop Windows saya (maaf, tidak ada Linux atau Cygwin dll yang dapat diinstal pada laptop kerja). Bantuan apa pun akan sangat dihargai karena ini akan membuat hidup saya lebih mudah!

xkcd
sumber

Jawaban:

19

Putty memang mendukung ssh tunnels, jika Anda memperluas pohon Connection, SSH, Anda akan melihat entri untuk terowongan.

Terowongan lokal menghasilkan pembukaan porta lokal pada mesin windows Anda yang mengirim ulang ke alamat ip dan port yang Anda tentukan. Misalnya, ketika saya mencoba RDP ke desktop di rumah saya, saya biasanya akan memilih port lokal acak, seperti 7789, kemudian meletakkan alamat ip lokal desktop (1.2.3.4:3389) sebagai remote tuan rumah. Pastikan untuk mengklik "Tambah", lalu "Terapkan." Pada titik ini, ketika Anda rdp ke 127.0.0.1:7789, Anda kemudian akan terhubung ke 1.2.3.4:3389 selama sesi dempul.

Di sinilah kesenangan masuk. Jika kemudian Anda mengatur terowongan port pada kotak perantara Anda, mengatur port lokal yang Anda tentukan sebagai port jarak jauh di dempul, Anda dapat memantul melalui dempul Anda, melalui kotak perantara tujuan akhir Anda. Anda masih perlu melakukan beberapa ssh sambung, tetapi Anda akan dapat menyeberang vnc atau rdp langsung dari sistem windows setelah Anda mengatur, yang menurut saya ingin Anda lakukan.

CONTOH

  1. Kepala ke panel terowongan di Putty (Koneksi-> SSH-> Tunnels diakses baik dari menu konteks jika sesi ssh sudah aktif, atau di layar koneksi awal ketika baru memulai dempul)
  2. Buat terowongan dengan sumber lokal 15900, dan sumber jarak jauh 127.0.0.1:15900
  3. Hubungkan (jika belum terhubung) ke Gateway1.
  4. Pada Gateway1, ssh -L 127.0.0.1:15900:VNCServerIP==900 user @ Gateway2
  5. Setelah ssh ke Gateway2 naik, coba vnc ke 127.0.0.1:15900 - sekarang Anda akan melihat layar VNC di sisi yang jauh!

BONUS TAMBAH - tidak banyak orang tahu ini, tetapi proses ini juga dapat digunakan untuk proksi lalu lintas IPv6 / IPv4 juga. SSH tidak peduli protokol apa yang digunakannya untuk terowongan, sehingga Anda secara teoritis dapat mengakses host hanya IPv6 dari sistem IPv4 saja, mengingat bahwa server ssh adalah dual stack (memiliki alamat IPv4 dan IPv6.)

Peter Grace
sumber
15

Ada alternatif jika Anda ingin menggunakan Putty untuk kedua hop. Dalam contoh ini kita melompat dari Gateway # 1 (10.0.1.123) ke Gateway # 2 (10.0.1.456) ke port 80 pada 10.0.1.789.

  1. Pertama buat hop to gateway # 1. Pertama, atur koneksi ke server pertama. Siapkan terowongan ke gateway kedua di Connection> SSH> Tunnels. Dalam contoh ini kita meneruskan port 2222 ke gateway kedua.

    terhubung ke server

    mengatur terowongan

  2. Sekarang kita akan menyiapkan hop kedua. Kami akan melakukan tunnel melalui gateway pertama ke gateway berikutnya dan mengatur penerusan port pada gateway kedua. Koneksi ke localhost pada port 2222. Ini akan terowongan melalui koneksi ssh yang sedang berjalan ke hop kedua. Pada koneksi ini kami menyiapkan port forward dari port 3333 ke 10.0.1.789.

    masukkan deskripsi gambar di sini

    masukkan deskripsi gambar di sini

  3. Sekarang buka browser dan navigasikan ke 127.0.0.1:3333 dan Anda akan menggali melalui dua koneksi SSH ke 10.0.1.789:80

Scott
sumber
1
Apakah ada cara untuk mencapai yang sama dengan menggunakan satu sesi dempul tunggal dengan dua terowongan yang dikonfigurasikan dalam menu SSH -> Tunnels? Dengan cara ini Anda hanya perlu membuka satu contoh dempul?
Ulrich