Penerusan Port SSH

0

Saya memiliki mesin server (A) yang telah diinstal ssh, bersama dengan server web.

Bagaimana cara meneruskan port dengan server web ke mesin lokal saya (B).

Saya harus dapat menelusuri http://localhost:forwardedport

Apakah penerusan port LOKAL atau REMOTE ini? Inilah yang saya coba.

ssh -L 8888:name.dnydns-server.com:8888 localhost

ssh -L 8888:localhost:8888 name.dnydns-server.com

and both of those with [email protected]

Apa yang saya lakukan salah?

EDIT : Jawaban yang diberikan secara faktual benar dan menjelaskan penggunaan penerusan porta. Ternyata saya menggunakan perintah yang benar, alih-alih ada aturan firewall yang mencegah saya menghubungkan ke port 8888 DARI server itu sendiri. Saya menemukan ini ketika saya mencoba untuk terhubung ke situs web sementara sshed ke server jauh.

Daisetsu
sumber
Anda perlu melakukan beberapa pemecahan masalah. periksa Sebelum melakukan http: // localhost. Apakah terowongan SSH dibuat? Perintah netstat -aon akan menunjukkan kepada Anda. Mungkin terowongan tidak dibuat karena firewall windows memblokir port 22 di mesin yang menjalankan sshd. Rekatkan hasil apa yang Anda dapatkan ketika Anda menjalankan perintah ssh di baris perintah. Tunjukkan apa yang terjadi ketika Anda melakukan http: // localhost
barlop
Bagi saya portforwarding berarti mengatur router untuk mengarahkan lalu lintas masuk pada port tertentu (misalnya 80 untuk http) ke komputer / server tertentu dalam jaringan. Anda bertanya tentang terowongan ssh. Tapi mungkin saya salah paham?
SPRBRN

Jawaban:

5

Saya kira Anda pertama-tama perlu menjelaskan beberapa istilah yang akan saya gunakan:

Klien berarti mesin tempat Anda memulai ssh. Mesin ini disebut oleh "lokal".

Server berarti mesin yang ingin Anda sambungkan dengan ssh. Mesin ini disebut dengan "remote".

Penerusan port lokal dengan ssh berarti Anda terhubung dari klien ke server Anda dan dengan demikian membuka terowongan sehingga program lain pada klien Anda dapat terhubung melalui port lokal ke host & port di situs server. Opsi untuk ini adalah -L local_port: remote_machine: remote_port.

Penerusan port jarak jauh dengan ssh berarti Anda terhubung dari klien ke server Anda dan dengan demikian membuka terowongan sehingga program di server Anda dapat terhubung melalui port di server ke host & port di situs klien. Opsi untuk ini adalah -R remote_port: local_machine: local_port.

Jika saya memahami Anda dengan benar, Anda ingin penerusan lokal, mis. buat koneksi ke server nama Anda.dnydns-server.com dan kemudian terhubung dengan browser lokal Anda ke port 8888 di name.dnydns-server.com.

Perintah berikut dari daftar Anda sebenarnya harus melakukan apa yang Anda inginkan:

ssh -L 8888:localhost:8888 name.dnydns-server.com

8888 pertama adalah port pada klien Anda yang dapat dihubungkan oleh program tambahan Anda (browser).

"Localhost" di baris itu terlihat dari ujung terowongan, yang ada di server (name.dnydns-server.com). Ada localhost adalah mesin itu sendiri jadi itu yang Anda inginkan. (Anda dapat menempatkan nama yang berbeda di jaringan server Anda di sana untuk mengaksesnya)

8888 kedua adalah port yang ingin Anda sambungkan ke situs server. Jika Anda menjalankan server web pada port standar 80, Anda harus mengubahnya menjadi 80.

name.dnydns-server.com adalah nama server ssh tempat Anda terhubung, yang kemudian menjadi titik akhir terowongan.

Saya tidak tahu mengapa kalimat ini tidak berhasil untuk Anda. Apakah Anda berhenti ssh? Itu harus tetap terhubung sepanjang waktu agar terowongan berfungsi. Port default pada server web? Server web tidak berjalan?

Edit: Saya mengubah definisi "klien" dan "server" untuk mengklarifikasi hal-hal, sehingga beberapa komentar tidak berlaku lagi dan merujuk ke konten yang dihapus.

Michael Suelmann
sumber
baik Anda mulai dengan definisi. Jika situasinya berbeda dan Anda menjalankan server ssh di mesin tempat Anda duduk, maka terminologi apa yang akan Anda gunakan? (meskipun saya tidak yakin kapan kasus pengguna seperti itu akan terjadi)
barlop
juga, saya ingin tahu, dapatkah Anda menguraikan contoh di mana ini tidak begitu- "Klien berarti mesin tempat Anda duduk (biasanya - jika Anda membuat koneksi, ini bisa lebih rumit)"?
barlop
Anda bisa duduk di mesin A, lakukan "ssh B" dan kemudian "ssh C" dari sana. Untuk ssh kedua, "klien" adalah B, bukan mesin tempat Anda duduk.
Michael Suelmann
ok, dan bagaimana Anda menghubungkan dua terowongan terowongan A-B dan terowongan B-C?
barlop
1
sesuatu seperti ini seharusnya bekerja: ssh -L 8888: localhost: 9999 B "ssh -L 9999: localhost: 7777 C" - tapi itu tidak benar-benar seperti yang saya pikirkan ketika saya membuat definisi saya. Ada skenario lain, di mana Anda tidak duduk di ssh-client, seperti koneksi desktop jarak jauh.
Michael Suelmann
3

Saya menduga bahwa server telah sshd diinstal, dan mendengarkan pada port default yang terkenal (22), dan bahwa server web mendengarkan pada port default yang terkenal (80). Asumsinya adalah bahwa server adalah server (A) adalah 'saluran' di mana Anda ingin terowongan untuk sampai ke server web. Inilah yang perlu Anda beri tahu dalam hal ini:

ssh -L <local port to point your browser toward>:<host name or IP of the web server>:<port that the web server is listening on> <valid user on server>@<server name or ip address>

Jadi, inilah yang menurut saya seharusnya berdasarkan pada apa yang saya pikir Anda coba lakukan:

ssh -L 8888:web.server.dyndns-server.com:80 youruserid@yourserver

Lakukan ini, lalu arahkan browser Anda ke localhost: 8888.

Lobos
sumber