SSH Reverse Port Forwarding dengan Putty - cara menentukan alamat bind

16

Dengan menggunakan Putty, saya telah menyiapkan proxy terbalik yang memungkinkan saya untuk terhubung pada port 8080 dari server di server.tldke port 80 dari mesin yang memulai koneksi SSH.

Server memungkinkan saya untuk terhubung localhost:8080dan mengembalikan hasil initiator:80ketika saya terhubung di server.

Pertanyaan ini mengatakan untuk mengaktifkan GatewayPorts dan ikat ke semua alamat.

Menggunakan Putty, bagaimana saya bisa mengekspos port 8080 di server sehingga ketika permintaan datang pada antarmuka eksternal (misalnya permintaan web) port diteruskan ke initiator:80?

masukkan deskripsi gambar di sini

Darbio
sumber
Bisakah Anda merinci dengan tepat apa yang Anda masukkan ke dalam dialog Putty untuk membuat terowongan?
EightBitTony
Menambahkan tangkapan layar - port berbeda dari teks contoh, namun ini tidak memungkinkan permintaan pada antarmuka eksternal untuk rute melalui terowongan (mis. 1.2.3.4:8080). Permintaan internal dialihkan (localhost: 8080).
Darbio
Apa yang dilakukan netstat -an | grep 8080 tampilkan? Dan ketika Anda mengatakan tidak mengizinkan, apa maksud Anda? Apakah Anda memiliki firewall yang memblokir koneksi ke port 8080?
EightBitTony

Jawaban:

17

Ada dua kotak centang saat mengatur terowongan Putty,

  • Port lokal menerima koneksi dari host lain
  • Port jarak jauh melakukan hal yang sama (hanya SSH-2)

yang kedua melakukan apa yang Anda butuhkan.

Saya baru saja mengujinya,

Dialog terowongan Putty,

  • Centang Port jarak jauh ...
  • Masukkan 8080 ke port Sumber
  • Masukkan 127.0.0.1:80 ke port Tujuan
  • Pilih tombol radio 'Remote'
  • Klik Tambah
  • Menghubung

Berfungsi dengan baik, inilah netstat yang dihasilkan,

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Anda juga dapat menggunakan plink.exe yang disertakan dengan Putty, misalnya,

plink -R *:8080:localhost:80 [email protected]

yang berfungsi dengan baik juga.

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Jika Anda masih mendapatkan 127.0.0.1:8080 di host, maka GatewayPorts masih tidak diatur di konfigurasi sshd Anda.

Juga, jangan lupa untuk memperbarui firewall pada server target untuk memungkinkan koneksi eksternal ke port 8080.

EightBitTony
sumber
Tidak - sepertinya tidak memberi saya perilaku yang sama seperti ssh -R *:8080:localhost:80seharusnya?
Darbio
GatewayPorts diatur ke ya. Ini bekerja dengan ssh -R \*:8080:localhost:80perintah, hanya tidak bisa mengetahuinya dalam Putty
Darbio
@ Darbio apakah Anda pernah memikirkannya dalam dempul?
barlop
Saya memang menggunakan banyak port forwarding, biasanya dengan cara local2remote (vnc, proxy, dll), dan kali ini tidak bekerja pada port remote2local, tidak peduli opsi apa yang saya periksa, port tidak muncul terbuka pada remote. Menggunakan plinksecara langsung tidak bekerja tanpa masalah menggunakan perintah yang sama dari ssh biasa. Saya tidak bisa mengerti apa yang membuat dempul itu tidak berfungsi ...
m3nda