Bagaimana saya bisa menggunakan SSH dengan proxy SOCKS 5?

35

Saya memiliki proxy SOCKS5 yang diatur melalui Putty dengan port 7777 dikonfigurasi sebagai port dinamis. Saya dapat menggunakan firefox / filezilla / etc dengan mengkonfigurasi mereka untuk menggunakan proxy SOCKS localhostdan port 7777. Tapi saya tidak tahu bagaimana cara ssh (melalui Cygwin) ke server jauh dengan menggunakan port dinamis. Apakah ini mungkin?

Saya sudah mencoba menggunakan ProxyCommandmelalui metode berikut.

  1. Buat ~/.ssh/configdengan baris berikut:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Jalankan ssh -p22 user @ remotehost

Pesan yang saya dapatkan adalah ssh_exchange_identification: Connection closed by remote host

Rusty Lemur
sumber
1
Untuk membuat program yang tidak mendukung SOCKS melalui SOCKS, Anda dapat menggunakan apa yang disebut proxifer; lihat en.wikipedia.org/wiki/Comparison_of_proxifiers . Secara khusus, saya merekomendasikan proxifer tun2socks open source saya ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak
Terima kasih atas komentarnya Ambroz. Saya membutuhkannya untuk bekerja di cygwin, dan saya melihat dari halaman wikipedia tentang proxifiers bahwa semua yang disebutkannya tidak diterapkan di cygwin atau tidak berlaku. Apakah ada cara untuk membuat proxifier bekerja di cygwin?
Anda tidak memerlukannya untuk secara khusus mendukung Cygwin. Program Cygwin pada akhirnya hanya program Windows, tetapi dengan antarmuka POSIX diimplementasikan sebagai perpustakaan. Jika proxifier bekerja pada Windows, ia seharusnya dapat memproksi program Cygwin dengan baik.
Ambroz Bizjak

Jawaban:

31

Anda menggunakan 'sambungkan' untuk HTTPS sebagai versi proksi Anda, ini dari man nc:

-X proxy_version Meminta agar nc menggunakan protokol yang ditentukan saat berbicara dengan server proxy. Protokol yang didukung adalah '' 4 '' (SOCKS v.4), '' 5 '' (SOCKS v.5) dan 'connect' (proxy HTTPS). Jika protokol tidak ditentukan, SOCKS versi 5 digunakan.

Jadi, Anda harus menggunakan yang berikut ini untuk menggunakan SOCKS 5:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

Atau sederhananya:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Saya harap ini membantu.


sumber
Terima kasih Saman, itu berhasil! Juga, terima kasih atas penjelasannya, ini membantu.
Itu ProxyCommandharus menjadi baris pertama dari ~/.ssh/config', or else nested inside a specify bagian Host` Anda . Tidak begitu yakin mengapa. Tidak berfungsi jika itu adalah baris terakhir di~/.ssh/config
Aaron McDaid
@AaronMcDaid: Dari man ssh_config: "Untuk setiap parameter, nilai yang diperoleh pertama akan digunakan." Karena itu ... pengaturan global harus ada sebelumHost bagian apa pun . Baris terakhir ~/.ssh/configadalah bagian dari bagian terakhir Host.
mpb
Layak disebutkan adalah bahwa netcat ada di /bin/ncDebian dan Ubuntu.
Per Lundberg
11
ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: Versi 6.25

pengguna264910
sumber
hanya ingin tahu - mengapa proxy-type socks4?
tersangka
2
Bisakah Anda menambahkan sedikit penjelasan lebih lanjut untuk mengatakan mengapa ini solusinya?
ChrisF
1
@ ChrisF itu sama dengan solusi yang diterima, tetapi itu adalah satu-baris! Tidak perlu memodifikasi file konfigurasi.
j123b567
1
Ini adalah program nmap ncat (datang melalui apt install nmapsistem APT seperti Ubuntu dan Debian), yang berbeda dari netcat (baik itu netcat-openbsd atau netcat-tradisional Hobbit).
Adam Katz
1
@suspectus terkait dengan komentar @Adam Katz, hal proxy-typeini socks4karena ncatprogram nmap tidak mendukung sock5 hingga saat ini. Memang, ini adalah masalah bahkan sekarang (Nov 2017), karena RHEL 7 / Centos 7 beralih ke paket nmap tetapi menggunakan build yang lebih tua yang tidak mendukung socks5
Randall
3

tsocks ( http://tsocks.sourceforge.net/ ) adalah pembungkus yang bagus yang menggunakan LD_PRELOAD untuk membuat program apa pun menggunakan proxy SOCKS secara transparan:

tsocks ssh example.com

Hanya berfungsi, ingatlah untuk mengkonfigurasi IP proxy SOCKS di /etc/tsocks.conf

neutrinus
sumber
terlalu rumit untuk memiliki file konfigurasi
Jiang YD
1

Perintah berikut ini akan dilakukan, hanya menggunakan nc:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

Defaultnya adalah HTTP proxy, ada proxy HTTP yang berjalan di port 7000.

Chinglin Wen
sumber