Perintah untuk meneruskan port 80 dari mesin lokal Anda ( localhost
) ke host jarak jauh pada port 8000 adalah:
ssh -R 8000:localhost:80 oli@remote-machine
Ini membutuhkan perubahan tambahan pada server SSH, tambahkan baris ke /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Selanjutnya, muat ulang konfigurasi dengan mengeksekusi server sudo reload ssh
.
Pengaturan ini GatewayPorts yes
menyebabkan SSH mengikat port 8000 pada alamat wildcard, sehingga menjadi tersedia untuk alamat publik remote-machine
( remote-machine:8000
).
Jika Anda perlu memiliki opsi untuk tidak mengikat semuanya pada alamat wildcard, ubah GatewayPorts yes
ke GatewayPorts clientspecified
. Karena ssh
mengikat ke alamat loopback secara default, Anda perlu menentukan yang kosong bind_address
untuk mengikat alamat wildcard:
ssh -R :8000:localhost:80 oli@remote-machine
The :
sebelum 8000
adalah wajib jika GatewayPorts
diatur ke clientspecified
dan Anda ingin mengizinkan akses publik ke remote-machine:8000
.
Kutipan manual yang relevan:
ssh (1)
-R [bind_address:] port: host: hostport
Menentukan bahwa port yang diberikan pada host remote (server) akan diteruskan ke host dan port yang diberikan di sisi lokal. Ini bekerja dengan mengalokasikan soket untuk mendengarkan port di sisi jarak jauh, dan setiap kali koneksi dibuat ke port ini, koneksi diteruskan melalui saluran aman, dan koneksi dibuat untuk meng-host port hostport dari mesin lokal. Secara default, soket pendengaran di server akan terikat ke antarmuka loopback saja. Ini mungkin ditimpa dengan menetapkan bind_address. Bind_address kosong, atau alamat '*', menunjukkan bahwa soket jarak jauh harus mendengarkan semua antarmuka. Menentukan bind_address jarak jauh hanya akan berhasil jika opsi GatewayPorts server diaktifkan (lihat sshd_config (5)).
sshd_config (5)
GatewayPorts
Menentukan apakah host jarak jauh diizinkan untuk terhubung ke port yang diteruskan untuk klien. GatewayPorts dapat digunakan untuk menentukan bahwa sshd harus memungkinkan penerusan port jarak jauh untuk mengikat ke alamat non-loopback, sehingga memungkinkan host lain untuk terhubung. Argumennya mungkin 'tidak' untuk memaksa penerusan port jarak jauh hanya tersedia untuk host lokal, 'ya' untuk memaksa penerusan port jarak jauh untuk mengikat ke alamat wildcard, atau 'klien yang ditentukan' untuk memungkinkan klien memilih alamat yang penerusannya terikat. Standarnya adalah 'tidak'.
Lihat juga:
GatewayPorts
adalah peluru ajaib di sini. Saya suka bahwa Anda telah menemukan versi yang dapat memungkinkan saya untuk membatasi teknik yang cukup kuat ini untuk pengguna tertentu.ssh
perintah. Ini mengkonfigurasi apakah klien lain dapat berkomunikasi dengan port yang diteruskan di server.-R :8000:127.0.1.1:80
(atau127.x.x.x
alamat lain ). Jika tidak, tidak, Anda tidak akan dapat mempelajari alamat IP jarak jauh.Jika server memiliki
GatewayPorts no
, Anda dapat mencapai hasil yang sama dengan mengeksekusissh -g -L 8001:localhost:8000 oli@remote-machine
di server setelah Anda menjalankanssh -R
perintah pada klien. Ini akan membuat loopback port 8000 pada server dapat diakses pada semua antarmuka pada port 8001.sumber