Memahami terowongan SSH

15

Saya memiliki server linux (Ubuntu) yang saya akses root melalui ssh (port 22) saja. Pada server itu ada database MySQL yang mendengarkan pada port 3306. Apakah mungkin menggunakan dempul (pada mesin saya) dan tunneling (pada mesin linux) untuk membuat terowongan dari port lokal pada mesin saya (katakan 4000), ke server linux pada port 22 dan kemudian dari server ke dirinya sendiri pada port 3306?

Muhammad Gelbana
sumber

Jawaban:

20

Saya telah menggambar beberapa sketsa

Mesin, di mana perintah terowongan ssh diketik (atau dalam kasus Anda: Putty dengan tunneling dimulai) disebut »host Anda« .

ssh tunnel mulai dari lokal


ssh tunnel mulai dari jarak jauh

pengantar

  1. lokal: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostberarti: terhubung dengan ssh ke connectToHost, dan meneruskan semua upaya koneksi ke port lokal sourcePort ke onPortmesin yang dipanggil forwardToHost, yang dapat dijangkau dari connectToHostmesin.

  2. terpencil: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostberarti: terhubung dengan ssh ke connectToHost, dan meneruskan semua upaya koneksi ke porta jarak jauh sourcePort ke onPortmesin yang dipanggil forwardToHost, yang dapat dijangkau dari mesin lokal Anda.

Contoh anda

Gambar pertama mewakili situasi Anda. Kotak biru yang dipanggil your hostadalah mesin Windows Anda dari mana Anda memulai Putty ke server Ubuntu Anda, yang disebut remotehostdalam gambar saya. Koneksi ke port hijau (dalam nomor port kasus Anda 4000) diteruskan ke port MySQL merah muda 3306dari localhostmesin server Ubuntu Anda (yaitu server Ubuntu itu sendiri).

Untuk mengaturnya dengan Putty

Mulai Putty dan masukkan pengaturan koneksi Anda yang biasa (Hostname atau alamat IP) Di pohon di sisi kiri, navigasikan ke

Koneksi → SSH → Terowongan

dan membuat terowongan lokal baru dengan port sumber 4000(123 pada gambar) dan tujuan localhost:3306(localhost: 456 pada gambar).

Jangan lupa klik Add .

Kemudian navigasikan kembali ke sesi dan klik Simpan untuk menyimpan pengaturan Anda untuk waktu berikutnya. Sekarang Anda dapat menggunakan koneksi yang disimpan untuk masuk ke server Anda dan setelah Anda berhasil masuk, setiap kali Anda terhubung ke port 4000 pada host Anda, Anda benar-benar akan terhubung ke port 3306 di server Ubuntu.

buat terowongan depan dengan dempul

erik
sumber
Bagus sekali, terima kasih untuk ilustrasinya. Saya menghargai bahwa Anda menambahkan terowongan tipe "jarak jauh", yang tidak saya bahas di jawaban saya.
Guss
1
Jawaban ini luar biasa
Mauricio Pasquier Juan
2
Jawaban mengagumkan dan sangat ilustratif +1
rkachach
1
Bagaimana ini memiliki suara yang sangat sedikit memalukan.
Ryan Fisher
1
Saya suka sketsa ini. Gambar bernilai ribuan kata.
qartal
16

Jawaban sederhananya adalah ya, tetapi harap dicatat bahwa terowongan sebenarnya dimulai di komputer Anda. Cara kerjanya adalah Anda membuat koneksi SSH ke server (yang aman) dan kemudian menginstruksikan SSH untuk mendengarkan port di sisi Anda dan meneruskan koneksi apa pun yang masuk - ke port tertentu pada alamat host tertentu pada sisi server. Target terowongan tidak harus server yang sama - itu bisa berupa alamat lain yang valid, yang - dalam hal ini bukan server yang menjalankan server SSH itu sendiri - akan melihat koneksi yang masuk seolah-olah itu berasal dari server SSH alih-alih dari klien Anda.

Untuk mengaturnya, buka dialog konfigurasi Putty, pilih pengaturan koneksi yang biasanya Anda gunakan untuk mengakses server Anda dan klik "muat" (dan bukan "buka"). Kemudian di pohon di sisi kiri, navigasikan ke Connection-> SSH-> Tunnels dan buat terowongan "lokal" baru dengan port sumber 4000 dan tujuan "localhost: 3306" (karena alamat tujuan diselesaikan pada server, dari sudut pandang server, port MySQL ada di localhost). Kemudian navigasikan kembali ke "sesi" dan klik "Simpan" untuk menyimpan pengaturan Anda untuk waktu berikutnya. Sekarang Anda dapat menggunakan koneksi yang disimpan untuk masuk ke server Anda dan setelah Anda berhasil masuk, setiap kali Anda terhubung ke port 4000 di komputer Anda, Anda benar-benar akan terhubung ke port 3306 di server.

Jika Anda serius ke terowongan, dan menjalankan klien MS-Windows, maka saya sarankan untuk melihat Putty Tunnel Manager yang menggunakan Putty untuk mengatur dan menjalankan terowongan dengan mudah tanpa harus memiliki konsol dempul terbuka.

Guss
sumber