Dapatkah saya membuat SSH untuk mengarahkan HTTP melalui server seperti itu adalah proxy?

33

Katakanlah saya punya serverdan client. Saya perlu membuat koneksi dari clientke websitemelalui serverseperti itu adalah proxy.

Apakah mungkin untuk melakukan ini menggunakan terowongan SSH, atau apakah saya harus menginstal beberapa layanan proxy ke server?

Jakub Arnold
sumber

Jawaban:

43

Anda dapat melakukan ini menggunakan ssh

ssh -L 80:remotehost:80 user@myserver

Anda akan memiliki terowongan dari port lokal 80 Anda ke port remotehost 80 lalu. Ini tidak harus sama dengan server saya. Untuk membuatnya transparan, Anda harus menambahkan entri ke file host. Jika Anda tidak melakukan itu, vhosts tidak akan berfungsi. Jika Anda menginginkan koneksi SOCKS-proxy, Anda juga dapat menggunakan

ssh -D 5000 user@myserver

Ini akan membuat proxy SOCKS pada localhost port 5000 yang merutekan semua permintaan melalui server saya.

Wienczny
sumber
2
Jika Anda membutuhkan terowongan yang tersedia dari klien di luar kotak Anda, tambahkan opsi -g.
mr-euro
1
Perintah seperti yang ditulis tidak bekerja untuk saya. Saya harus mengganti remote host dengan loopback seperti ini: ssh -L 80: 127.0.0.1: 80 user @ myserver
eficker
Akan lebih bermanfaat jika port jarak jauh berbeda dari ssh -L 81:remotehost:80 user@myserverpembicaraan lokal satu port 81 seolah-olah 80 pada remote.
Rafareino
1
Jika Anda ingin menambahkan proxy SOCKS melalui ~ / .ssh / config Anda, gunakan:Host myserver User user DynamicForward 5000
bonh
15

Ya itu mungkin.

Jalankan ssh -D port user@hostdan atur klien Anda untuk menggunakan kotak Anda sebagai proksi SOCKS.

Jika Anda memerlukan proxy HTTP secara khusus, maka Anda dapat menggunakan Proxychains dan merutekannya melalui SOCKS sebelumnya.

mr-euro
sumber
5

Putty melakukan ini dengan cukup baik juga.

Di bawah SSH, goto Tunnels. Di bagian bawah, masukkan 8080 di port, dan untuk tujuan, biarkan hitam dan pilih tombol radio "Dinamis". Itu semua yang perlu Anda lakukan, sekarang terhubung ke server menggunakan Putty.

Setelah terhubung, Anda memiliki server proxy yang berjalan di localhost Anda di port 8080 yang akan mem-proxy semua permintaan melalui server Anda.

Sekarang gunakan browser web dan setup proxy dengan mengatur host = localhost dan port = 8080 dan pastikan itu adalah proxy SOCKS yang Anda pilih. Saya melakukan ini sepanjang waktu, jadi Jika Anda menggunakan Firefox, pastikan untuk menginstal plugin FoxyProxy karena itu membuat menghidupkan / mematikan proxy urusan satu klik.

Perhatian: Perlu diketahui bahwa secara default, permintaan DNS Anda tidak diproksi. Jadi situs web yang Anda kunjungi melalui proxy masih akan dicatat (jika mereka mencatat hal ini). Anda dapat mengatur firefox ke permintaan DNS proxy juga, itu hanya tidak melakukannya secara default.

J Sidhu
sumber
5

sshuttle bekerja seperti VPN tetapi melalui SSH.

Server proxy transparan yang berfungsi sebagai VPN orang miskin. Maju ke atas ssh. Tidak memerlukan admin. Bekerja dengan Linux dan MacOS. Mendukung tunneling DNS.

https://github.com/sshuttle/sshuttle

Kasper Grubbe
sumber
2

Untuk memungkinkan proxy menjalankan komputer, dan mengizinkan klien lain terhubung ke Anda, Anda akan membutuhkan opsi -g. Jadi misalnya, Anda akan menjalankan ini di server bernama foo:

ssh -g -ND 9191 root@remotehost

Anda kemudian dapat mengatur proxy di browser klien untuk menggunakan server foo dan port 9191 untuk proxy SOCKS. Klien akan mengirim permintaan mereka terlalu foo, yang pada gilirannya akan meneruskan permintaan melalui ssh ke remotehost. Jadi di internet, sepertinya mereka menggunakan remotehost.

Jika Anda ingin meneruskan permintaan DNS juga dengan firefox, edit about: config di firefox dan setel network.proxy.socks_remote_dns menjadi true.

Kyle Brandt
sumber