Apa perbedaan fungsi antara keduanya? Saya agak bingung karenanya.
Penerusan lokal membuat port jarak jauh tersedia secara lokal.
Penerusan jarak jauh membuat port lokal tersedia dari jarak jauh.
Tetapi 'ketersediaan' ini akan bekerja di kedua arah ... atau apakah itu?
Misalnya berikut ini (dikeluarkan dari 'rumah' tuan rumah)
ssh -R 1234:localhost:2345 user@work
Ini akan membuat terowongan aman antara work :: 1234 dan home :: 2345, kan?
Jika saya memasukkan sesuatu di satu ujung, itu akan keluar di ujung lainnya.
Tapi kemudian, saya dapat mencapai hal yang sama dengan panggilan berikut dari host 'work':
ssh -L 1234:localhost:2345 user@home
Jadi, satu-satunya perbedaan adalah dari mana saya menyebutnya, benar?
ssh
ssh-tunnel
nandaloo
sumber
sumber
Jawaban:
Perbedaan praktis utama, adalah bahwa jika menghubungkan 2 komputer A dan B, dan B berada di belakang firewall atau Router NAT yang tidak Anda kontrol, dan itu memblokir masuk .. Anda duduk di A. Anda tidak bisa mendapatkan A untuk terhubung ke B. Tapi B tidak akan memblokir keluar .. Jadi Anda mendapatkan B untuk terhubung ke A.
- klarifikasi tambahan--
Di atas, yang dipahami penanya .. berarti perbedaan praktis utama antara penerusan lokal dan jarak jauh. ssh -L dan ssh -R saat Anda akan menggunakan masing-masing. Saya tidak mengomentari contoh perintah khusus yang dia berikan, di mana dia beralih -L dan -R, dan server sshd yang dia hubungkan. Tapi sekarang saya akan mencoba mengomentarinya .. Dengan perintah ssh yang dia berikan, dari sudut pandang klien reguler dan server biasa, tampaknya tidak ada perbedaan, karena tidak mengatakan "ah ini adalah klien ssh dan ini adalah server ssh .. "tidak tahu ssh, dan yang merupakan aspek klien / server dari ssh tidak relevan dan tidak dikenal oleh klien biasa dan server biasa juga. Mereka hanya peduli tentang siapa yang mendengarkan, dan dari sudut pandang mereka, itu terlihat sama. Komputer kerja sedang mendengarkan dan pada 1234. Mereka tidak t perhatikan bahwa dalam satu kasus ini adalah server sshd.exe ssh, dan dalam kasus lain ini adalah ssh.exe, klien ssh. Omong-omong, di mana ssh client, dianggap lokal.
sumber
Ya, jika saya memahaminya dengan benar, penerusan port lokal dari a ke b harus identik dengan penerusan port jarak jauh dari b ke a (dan sebaliknya). Terowongan keluar dari a ke b (dilihat dari a) harus sama dengan terowongan masuk dari a ke b (dilihat dari b).
Port forwarding lokal menciptakan terowongan keluar yang dapat digunakan untuk membawa komputer internet publik ke mesin lokal. Pengguna lokal dapat mengakses host jarak jauh: kombinasi port pada host lokal, karena port yang diberikan pada host (klien) lokal diteruskan ke host dan port yang diberikan di sisi jarak jauh:
Penerusan port jarak jauh menciptakan terowongan masuk yang dapat digunakan untuk membawa komputer lokal ke internet publik. Pengguna internet dapat mengakses host lokal tertentu: kombinasi port pada host jarak jauh. Port yang diberikan pada host jarak jauh (server) diteruskan ke host yang diberikan dan port di sisi lokal:
sumber
0x4a6f4672
artinya?Dengan penerusan port lokal Anda (klien) membuka soket pendengaran di komputer Anda dan menghubungkan klien protokol tingkat aplikasi Anda ke soket ini. Sekarang koneksi diteruskan melalui SSH ke server. Server terhubung ke host jarak jauh dan terowongan data dari klien protokol Anda ke tujuan akhir.
Dengan penerusan port jarak jauh server membuka soket pendengar pada host server. Beberapa aplikasi jarak jauh terhubung ke host ini dan mengirimkan informasi yang ditransfer ke komputer klien Anda. Di sini koneksi dibuat ke tujuan akhir (beberapa server protokol tingkat aplikasi yang berjalan di komputer Anda atau di jaringan Anda) dan data ditransfer dari aplikasi jarak jauh ke tujuan akhir.
sumber
Ini paling baik dipahami dengan contoh-contoh kecil. Dalam exmples ini koneksi terstruktur seperti ini:
Server Lokal - (LAN) - Terminal ----- (SSH, biasanya melalui Internet) ----- Tunnel Endpoint - (LAN) - Mesin Jarak Jauh
Anda menggunakan penerusan port lokal jika Anda ingin melakukan tunnel ke mesin / port jarak jauh tertentu, dapat dijangkau oleh titik akhir terowongan yang Anda miliki akses ssh. Therby, port mesin jarak jauh itu juga dapat diakses secara lokal di terminal Anda sendiri, yaitu http: // localhost: terminal_port /.
Itu dilakukan dengan menggunakan sintaks berikut:
Anda dapat menggunakan penerusan port jarak jauh jika Anda ingin mengaktifkan remote ANYONE (!) , Yang dapat mencapai port mendengarkan titik akhir terowongan untuk dapat mengakses ip / port dari jarak jauh di LAN lokal Anda. Ke server lokal Anda, sepertinya koneksi dari mesin jarak jauh diinisiasi oleh terminal.
Sintaksnya adalah:
sumber
Halaman untuk socat mengklarifikasi ini dengan sangat baik. Ya, saya tahu ssh dan socat adalah dua hal yang sama sekali berbeda - tetapi dokumentasi socat sangat bagus.
sumber