Perbedaan antara ssh -L ke -D

52

Saya mencoba memahami perbedaan antara ssh -L ke -D. Apakah ada hal lain selain itu -D adalah SOCKS saja?

Terima kasih!


sumber

Jawaban:

53

ssh -Lmembuka port lokal. Segala sesuatu yang Anda kirim ke port tersebut dimasukkan melalui koneksi ssh dan keluar melalui server. Jika Anda melakukannya, misalnya, ssh -L 4444:google.com:80jika Anda membuka http://localhost:4444di browser Anda, Anda akan benar-benar melihat halaman google.

ssh -Dmembuka port lokal, tetapi tidak memiliki titik akhir spesifik seperti dengan -L. Sebaliknya, itu berpura-pura menjadi proxy SOCKS. Jika Anda membuka, misalnya, ssh -D 7777ketika Anda memberi tahu peramban Anda untuk digunakan localhost:7777sebagai proksi SOCKS Anda, semua permintaan peramban Anda melewati ssh tunnel. Ke internet publik, seolah-olah Anda meramban dari server ssh alih-alih dari komputer.

Jessidhia
sumber
6
Satu detail penting tentang -L adalah Anda dapat mengikat port lokal hanya untuk penggunaan lokal saja, misalnya localhost: 80: remotehost: 8080, tetapi Anda juga dapat mengikat port itu untuk orang lain. Jadi, Anda dapat membuat mesin di jaringan lokal Anda menawarkan akses ke mesin jarak jauh melalui terowongan, tanpa ada mesin lokal yang tahu tentang ini.
dividebyzero
@dividebyzero Saya mengalami kesulitan membayangkan apa yang Anda gambarkan
Michael Dorst
@MichaelDorst maksud saya kalimat ini dari halaman manual:The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
dividebyzero
ssh -L 4444:google.com:80tidak berfungsi untuk saya, memerlukan parameter lain untuk masuk, seperti [email protected]
Saman Mohamadi
6

Di SSH, -Dmenentukan penerusan port level aplikasi "dinamis" lokal.

SSH -D [bind_address:]port

Menentukan penerusan port tingkat aplikasi "dinamis" lokal. Ini berfungsi dengan mengalokasikan soket untuk mendengarkan port di sisi lokal, secara opsional terikat ke bind_address yang ditentukan. Setiap kali koneksi dilakukan ke port ini, koneksi diteruskan melalui saluran aman, dan protokol aplikasi kemudian digunakan untuk menentukan di mana harus terhubung ke dari mesin jarak jauh. Saat ini protokol SOCKS4 dan SOCKS5 didukung, dan ssh akan bertindak sebagai server SOCKS. Hanya root yang dapat meneruskan port yang diistimewakan. Penerusan port dinamis juga dapat ditentukan dalam file konfigurasi.

Alamat IPv6 dapat ditentukan dengan sintaks alternatif: [bind_address /] port atau dengan melampirkan alamat dalam tanda kurung siku.

Hanya superuser yang bisa meneruskan port khusus. Secara default, port lokal terikat sesuai dengan pengaturan GatewayPorts. Namun, bind_address eksplisit dapat digunakan untuk mengikat koneksi ke alamat tertentu. Bind_address dari "localhost" menunjukkan bahwa port mendengarkan terikat hanya untuk penggunaan lokal, sedangkan alamat kosong atau '*' menunjukkan bahwa port harus tersedia dari semua antarmuka.

Selain itu, ssh -LMenentukan bahwa port yang diberikan pada host (klien) lokal akan diteruskan ke host dan port yang diberikan di sisi jarak jauh.

SSH -L [bind_address:]port:host:hostport

Menentukan bahwa port yang diberikan pada host (klien) lokal harus diteruskan ke host yang diberikan dan port di sisi jarak jauh. Ini berfungsi dengan mengalokasikan soket untuk mendengarkan port di sisi lokal, secara opsional terikat ke bind_address yang ditentukan. Setiap kali koneksi dilakukan ke port ini, koneksi diteruskan melalui saluran aman, dan koneksi dibuat untuk meng-host port hostport dari mesin jarak jauh. Penerusan porta juga dapat ditentukan dalam file konfigurasi. Alamat IPv6 dapat ditentukan dengan sintaks alternatif: [bind_address /] port / host / hostport atau dengan melampirkan alamat dalam tanda kurung siku.

Hanya superuser yang bisa meneruskan port khusus. Secara default, port lokal terikat sesuai dengan pengaturan GatewayPorts. Namun, bind_address eksplisit dapat digunakan untuk mengikat koneksi ke alamat tertentu. Bind_address dari "localhost" menunjukkan bahwa port mendengarkan terikat hanya untuk penggunaan lokal, sedangkan alamat kosong atau '*' menunjukkan bahwa port harus tersedia dari semua antarmuka.

Mughil
sumber