Bagaimana Menggunakan SSH Tunneling untuk Akses Server Terhad dan Layari Secara Selamat
Pelanggan SSH menyambung ke pelayan Secure Shell, yang membolehkan anda menjalankan arahan terminal seolah-olah anda duduk di hadapan komputer lain. Tetapi klien SSH juga membolehkan anda untuk "terowong" pelabuhan antara sistem setempat anda dan pelayan SSH jauh.
Terdapat tiga jenis terowong SSH, dan semuanya digunakan untuk tujuan yang berlainan. Setiap melibatkan menggunakan pelayan SSH untuk mengalihkan trafik dari satu port rangkaian ke yang lain. Lalu lintas dihantar melalui sambungan SSH yang disulitkan, sehingga tidak dapat dipantau atau diubah dalam transit.
Anda boleh melakukan ini dengan ssh
arahan termasuk pada Linux, macOS, dan sistem operasi seperti UNIX. Di Windows, yang tidak termasuk arahan ssh terbina dalam, kami mengesyorkan alat PuTTY percuma untuk menyambung ke pelayan SSH. Ia menyokong terowong SSH juga.
Tempahan Pelabuhan Tempatan: Membuat Sumber Jauh Boleh Dihubungi pada Sistem Tempatan Anda
"Penghantaran port tempatan" membolehkan anda mengakses sumber rangkaian tempatan yang tidak terdedah kepada Internet. Sebagai contoh, katakan anda ingin mengakses pelayan pangkalan data di pejabat anda dari rumah anda. Atas alasan keselamatan, pelayan pangkalan data hanya dikonfigurasi untuk menerima sambungan dari rangkaian pejabat setempat. Tetapi jika anda mempunyai akses kepada pelayan SSH di pejabat, dan pelayan SSH membenarkan sambungan dari luar rangkaian pejabat, maka anda boleh menyambung ke pelayan SSH itu dari rumah dan mengakses pelayan pangkalan data seolah-olah anda berada di pejabat. Ini sering terjadi, kerana lebih mudah untuk mengamankan satu pelayan SSH terhadap serangan daripada untuk menjamin pelbagai sumber rangkaian yang berbeza.
Untuk melakukan ini, anda membuat sambungan SSH dengan pelayan SSH dan memberitahu pelanggan untuk memajukan lalu lintas dari port tertentu dari PC tempatan anda-contohnya, port 1234-ke alamat pelayan pangkalan data dan portnya di rangkaian pejabat. Oleh itu, apabila anda cuba mengakses pelayan pangkalan data di port 1234 PC semasa anda, "localhost", lalu lintas itu secara automatik "terowong" melalui sambungan SSH dan dihantar ke pelayan pangkalan data. Pelayan SSH duduk di tengah-tengah, menghantar trafik ke belakang dan sebagainya. Anda boleh menggunakan mana-mana baris arahan atau alat grafik untuk mengakses pelayan pangkalan data seolah-olah ia berjalan pada PC tempatan anda.
Untuk menggunakan pemajuan tempatan, sambungkan ke pelayan SSH secara normal, tetapi juga membekalkan -L
hujah. Sintaksnya ialah:
ssh -L local_port: remote_address: remote_port [email protected]
Sebagai contoh, katakan pelayan pangkalan data di pejabat anda terletak pada 192.168.1.111 di rangkaian pejabat. Anda mempunyai akses ke pelayan SSH pejabat di ssh.youroffice.com
, dan akaun pengguna anda pada pelayan SSH adalah bob
. Dalam hal ini, arahan anda akan kelihatan seperti ini:
ssh -L 8888: 192.168.1.111: 1234 [email protected]
Selepas menjalankan arahan itu, anda akan dapat mengakses pelayan pangkalan data di port 8888 di localhost. Jadi, jika pelayan pangkalan data menawarkan akses web, anda boleh memasukkan http: // localhost: 8888 ke pelayar web anda untuk mengaksesnya. Jika anda mempunyai alat baris arahan yang memerlukan alamat rangkaian pangkalan data, anda akan menunjukkannya di localhost: 8888. Semua lalu lintas yang dihantar ke port 8888 pada PC anda akan terowong ke 192.168.1.111:1234 pada rangkaian pejabat anda.
Ini sedikit lebih mengelirukan jika anda mahu menyambung ke aplikasi pelayan yang berjalan pada sistem yang sama dengan pelayan SSH itu sendiri. Sebagai contoh, katakan anda mempunyai pelayan SSH yang berjalan di port 22 di komputer pejabat anda, tetapi anda juga mempunyai pelayan pangkalan data yang berjalan di port 1234 pada sistem yang sama di alamat yang sama. Anda ingin mengakses pelayan pangkalan data dari rumah, tetapi sistem hanya menerima sambungan SSH pada port 22 dan firewallnya tidak membenarkan sebarang sambungan luaran lain.
Dalam kes ini, anda boleh menjalankan arahan seperti yang berikut:
ssh -L 8888: localhost: 1234 [email protected]
Apabila anda cuba mengakses pelayan pangkalan data di port 8888 pada PC semasa anda, lalu lintas akan dihantar melalui sambungan SSH. Apabila ia tiba di sistem yang menjalankan pelayan SSH, pelayan SSH akan menghantarnya ke port 1234 pada "localhost", yang merupakan PC yang sama yang menjalankan pelayan SSH itu sendiri. Jadi "localhost" dalam arahan di atas bermaksud "localhost" dari perspektif pelayan jauh.
Untuk melakukan ini dalam aplikasi PuTTY pada Windows, pilih Sambungan> SSH> Tunnels. Pilih pilihan "Tempatan". Untuk "Port Sumber", masukkan port tempatan. Untuk "Destinasi", masukkan alamat destinasi dan port dalam bentuk remote_address: remote_port.
Sebagai contoh, jika anda ingin menyediakan terowong SSH yang sama seperti di atas, anda akan masuk 8888
sebagai pelabuhan sumber dan localhost: 1234
sebagai destinasi. Klik "Tambah" selepas itu dan kemudian klik "Terbuka" untuk membuka sambungan SSH. Anda juga perlu memasukkan alamat dan pelabuhan pelayan SSH itu sendiri pada skrin utama "Sesi" sebelum menyambung, tentu saja.
Penerusan Pelabuhan Jauh: Membuat Sumber-sumber Tempatan Boleh diakses di Sistem Jauh
"Penghantaran port jauh" adalah bertentangan dengan penghantaran tempatan, dan tidak digunakan dengan kerap. Ia membolehkan anda membuat sumber pada PC tempatan anda yang tersedia di pelayan SSH. Sebagai contoh, katakan anda menjalankan pelayan web pada PC tempatan yang anda duduk di hadapan. Tetapi PC anda berada di belakang firewall yang tidak membenarkan trafik masuk ke perisian pelayan.
Dengan mengandaikan bahawa anda boleh mengakses pelayan SSH jauh, anda boleh menyambung ke pelayan SSH itu dan menggunakan penghantaran port jauh. Pelanggan SSH anda akan memberitahu pelayan untuk meneruskan port tertentu-katakan, port 1234-pada pelayan SSH ke alamat dan port khusus pada PC semasa atau rangkaian setempat anda. Apabila seseorang mengakses port 1234 pada pelayan SSH, lalu lintas itu secara automatik akan "terowong" melalui sambungan SSH. Sesiapa sahaja yang mempunyai akses ke pelayan SSH akan dapat mengakses pelayan web yang berjalan pada PC anda. Ini adalah satu cara untuk terowong melalui firewall.
Untuk menggunakan penghantaran jauh, gunakan ssh
perintah dengan -R
hujah. Sintaks ini sebahagian besarnya sama dengan penghantaran tempatan:
ssh -R remote_port: local_address: local_port [email protected]
Katakan anda ingin membuat aplikasi pelayan mendengar di port 1234 pada PC tempatan anda yang terdapat di port 8888 pada pelayan SSH jauh. Alamat pelayan SSH adalah ssh.youroffice.com
dan nama pengguna anda pada pelayan SSH adalah bob. Anda akan menjalankan arahan berikut:
ssh -R 8888: localhost: 1234 [email protected]
Seseorang kemudiannya boleh menyambung ke pelayan SSH di port 8888 dan sambungan itu akan terowel ke aplikasi pelayan yang berjalan di port 1234 pada PC tempatan yang anda buat sambungan dari.
Untuk melakukan ini dalam PuTTY pada Windows, pilih Sambungan> SSH> Tunnels. Pilih pilihan "Jauh". Untuk "Port Sumber", masukkan port jauh. Untuk "Destinasi", masukkan alamat destinasi dan port dalam bentuk local_address: local_port.
Sebagai contoh, jika anda ingin menyediakan contoh di atas, anda akan masuk 8888
sebagai pelabuhan sumber dan localhost: 1234
sebagai destinasi. Klik "Tambah" selepas itu dan kemudian klik "Terbuka" untuk membuka sambungan SSH. Anda juga perlu memasukkan alamat dan pelabuhan pelayan SSH itu sendiri pada skrin utama "Sesi" sebelum menyambung, tentu saja.
Orang kemudian boleh menyambung ke port 8888 pada pelayan SSH dan lalu lintas mereka akan terowong ke port 1234 pada sistem tempatan anda.
Secara lalai, pelayan SSH jauh hanya akan mendengar sambungan dari hos yang sama. Dalam erti kata lain, hanya orang yang mempunyai sistem yang sama dengan pelayan SSH itu sendiri akan dapat menyambungkannya. Ini adalah untuk tujuan keselamatan. Anda perlu mengaktifkan opsyen "GatewayPorts" dalam sshd_config pada pelayan SSH jauh jika anda mahu menindih tingkah laku ini.
Pengiriman Port Dinamik: Gunakan Pelayan SSH Anda sebagai Proksi
Terdapat juga "penghantaran port dinamik", yang berfungsi sama dengan proksi atau VPN. Pelanggan SSH akan membuat proksi SOCKS anda boleh mengkonfigurasi aplikasi untuk digunakan. Semua lalu lintas yang dihantar melalui proksi akan dihantar melalui pelayan SSH. Ini serupa dengan penghantaran tempatan-ia memerlukan lalu lintas tempatan yang dihantar ke port khusus pada PC anda dan menghantarnya melalui sambungan SSH ke lokasi terpencil.
Sebagai contoh, katakan anda menggunakan rangkaian Wi-Fi awam. Anda ingin menjelajah dengan selamat tanpa disedari. Jika anda mempunyai akses kepada pelayan SSH di rumah, anda boleh menyambung kepadanya dan menggunakan penghantaran port dinamik. Pelanggan SSH akan membuat proksi SOCKS pada PC anda. Semua lalu lintas yang dihantar ke proksi tersebut akan dihantar melalui sambungan pelayan SSH. Tiada sesiapa yang memantau rangkaian Wi-Fi awam akan dapat memantau pelayaran anda atau menapis tapak web yang anda boleh akses. Dari perspektif mana-mana laman web yang anda lawati, ia akan seolah-olah anda duduk di hadapan PC anda di rumah. Ini juga bermakna anda boleh menggunakan helah ini untuk mengakses laman web AS sahaja di luar Amerika Syarikat-dengan andaian anda mempunyai akses kepada pelayan SSH di Amerika Syarikat, tentu saja.
Sebagai contoh lain, anda mungkin mahu mengakses aplikasi pelayan media yang anda ada di rangkaian rumah anda. Atas sebab keselamatan, anda mungkin hanya mempunyai pelayan SSH yang terdedah kepada Internet. Anda tidak membenarkan sambungan masuk dari Internet ke aplikasi pelayan media anda. Anda boleh menyiapkan penghantaran port dinamik, mengkonfigurasi penyemak imbas web untuk menggunakan proksi SOCKS, dan kemudian mengakses pelayan yang berjalan di rangkaian rumah anda melalui penyemak imbas web seolah-olah anda duduk di hadapan sistem SSH anda di rumah. Contohnya, jika pelayan media anda terletak di port 192.168.1.123 di rangkaian rumah anda, anda boleh pasang alamatnya 192.168.1.123
ke mana-mana aplikasi menggunakan proksi SOCKS dan anda akan mengakses pelayan media seolah-olah anda berada di rangkaian rumah anda.
Untuk menggunakan penghantaran dinamik, jalankan perintah ssh dengan -D
hujah, seperti:
ssh-D local_port [email protected]
Sebagai contoh, katakan anda mempunyai akses kepada pelayan SSH di ssh.yourhome.com
dan nama pengguna anda pada pelayan SSH adalah bob
. Anda mahu menggunakan penghantaran dinamik untuk membuka proksi SOCKS di port 8888 pada PC semasa. Anda akan menjalankan arahan berikut:
ssh-D 8888 [email protected]
Anda kemudian dapat mengkonfigurasi pelayar web atau aplikasi lain untuk menggunakan alamat IP tempatan anda (127.0.01) dan port 8888. Semua lalu lintas dari aplikasi itu akan diarahkan melalui terowong.
Untuk melakukan ini dalam PuTTY pada Windows, pilih Sambungan> SSH> Tunnels. Pilih pilihan "Dinamik". Untuk "Port Sumber", masukkan port tempatan.
Sebagai contoh, jika anda ingin membuat proksi SOCKS di port 8888, anda akan masuk 8888
sebagai pelabuhan sumber. Klik "Tambah" selepas itu dan kemudian klik "Terbuka" untuk membuka sambungan SSH. Anda juga perlu memasukkan alamat dan pelabuhan pelayan SSH itu sendiri pada skrin utama "Sesi" sebelum menyambung, tentu saja.
Anda kemudian boleh mengkonfigurasi aplikasi untuk mengakses proksi SOCKS pada PC tempatan anda (iaitu, alamat IP 127.0.0.1, yang menunjuk ke PC tempatan anda) dan nyatakan port yang betul.
Sebagai contoh, anda boleh mengkonfigurasi Firefox untuk menggunakan proksi SOCKS. Ini amat berguna kerana Firefox boleh mempunyai tetapan proksi sendiri dan tidak perlu menggunakan tetapan proksi seluruh sistem. Firefox akan menghantar lalu lintas melalui terowong SSH, manakala aplikasi lain akan menggunakan sambungan Internet anda secara normal.
Apabila melakukan ini dalam Firefox, pilih "Konfigurasi proksi manual", masukkan "127.0.0.1" ke dalam kotak hos SOCKS, dan masukkan port dinamik ke dalam kotak "Port". Biarkan proksi HTTP Proxy, Proxy SSL, dan kotak Proksi FTP kosong.
Terowong ini akan tetap aktif dan terbuka selagi anda mempunyai sambungan sesi SSH. Apabila anda menamatkan sesi SSH dan memutuskan sambungan dari pelayan, terowong juga akan ditutup. Sambung semula dengan arahan yang sesuai (atau pilihan yang sesuai dalam PuTTY) untuk membuka semula terowong.