Làm cách nào tôi có thể sử dụng SSH với proxy SOCKS 5?


35

Tôi có proxy SOCKS5 được thiết lập thông qua PuTTY với cổng 7777 được định cấu hình là cổng động. Tôi có thể sử dụng firefox / filezilla / etc bằng cách cấu hình chúng để sử dụng proxy SOCKS với localhostvà cổng 7777. Nhưng tôi không thể tìm ra cách ssh (thông qua Cygwin) đến một máy chủ từ xa bằng cách sử dụng cổng động. Điều này có thể không?

Tôi đã thử sử dụng ProxyCommandthông qua phương pháp sau.

  1. Tạo ~/.ssh/configvới dòng sau:

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

Tin nhắn tôi nhận được là ssh_exchange_identification: Connection closed by remote host


1
Để tạo một chương trình mà không hỗ trợ SOCKS đi qua SOCKS, bạn có thể sử dụng cái gọi là proxifer; xem en.wikipedia.org/wiki/Comparison_of_proxifier . Cụ thể, tôi khuyên bạn nên sử dụng tun2socks proxifer mã nguồn mở của mình ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak

Cảm ơn các bình luận Ambroz. Tôi cần nó để hoạt động trong cygwin và tôi thấy từ trang wikipedia về các proxy mà tất cả những cái mà nó đề cập đều không được triển khai trong cygwin hoặc không áp dụng được. Có cách nào để một proxifier hoạt động trong cygwin không?

bạn không cần nó để hỗ trợ Cygwin. Các chương trình Cygwin cuối cùng chỉ là các chương trình Windows, nhưng với giao diện POSIX được triển khai như một thư viện. Nếu một proxifier hoạt động trên Windows, nó có thể giúp các chương trình Cygwin hoạt động tốt.
Ambroz Bizjak

Câu trả lời:


31

Bạn đang sử dụng 'kết nối' cho HTTPS làm phiên bản proxy của mình, đây là từ man nc:

-X proxy_version Yêu cầu nc nên sử dụng giao thức được chỉ định khi nói chuyện với máy chủ proxy. Các giao thức được hỗ trợ là '' 4 '' (SOCKS v.4), '' 5 '' (SOCKS v.5) và 'kết nối' (proxy HTTPS). Nếu giao thức không được chỉ định, SOCKS phiên bản 5 được sử dụng.

Vì vậy, bạn nên sử dụng những điều sau đây để sử dụng SOCKS 5:

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

Hoặc đơn giản:

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

Tôi hy vọng nó sẽ giúp.


Cảm ơn Saman, đã làm việc! Ngoài ra, nhờ lời giải thích, nó giúp.

Các ProxyCommandphải là dòng đầu tiên của bạn ~/.ssh/config', or else nested inside a specify phần Host`. Không thực sự chắc chắn tại sao. Nó không hoạt động nếu đó là dòng cuối cùng trong~/.ssh/config
Aaron McDaid

@AaronMcDaid: Từ man ssh_config: "Với mỗi tham số, giá trị thu được đầu tiên sẽ được sử dụng." Do đó ... cài đặt toàn cầu cần phải có trước bất kỳ Hostphần nào . Dòng cuối cùng ~/.ssh/configlà một phần của phần cuối cùng Host.
mpb

Đáng nói là netcat có trong /bin/ncDebian và 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: Phiên bản 6.25


chỉ tò mò - tại sao proxy-type socks4?
suspectus

2
Bạn có thể thêm một chút giải thích cho điều này để nói tại sao nó là giải pháp.
ChrisF

1
@ChrisF nó giống như giải pháp được chấp nhận, nhưng nó là một lớp lót! Không cần phải sửa đổi bất kỳ tập tin cấu hình.
j123b567

1
Đây là chương trình nmap ncat (xuất hiện apt install nmaptrên các hệ thống APT như Ubuntu và Debian), khác với netcat (có thể là netcat-openbsd hoặc truyền thống netcat của Hobbit).
Adam Katz

1
@suspectus liên quan đến bình luận @Adam Katz, đó proxy-typesocks4ncatchương trình nmap không hỗ trợ sock5 cho đến gần đây. Thật vậy, đây là một vấn đề ngay cả bây giờ (tháng 11 năm 2017), vì RHEL 7 / Centos 7 đã chuyển sang gói nmap nhưng sử dụng một bản dựng cũ không hỗ trợ vớ5
Randall

3

tsocks ( http://tsocks.sourceforge.net/ ) là một trình bao bọc đẹp sử dụng LD_PRELOAD để làm cho bất kỳ chương trình nào sử dụng proxy SOCKS trong suốt:

tsocks ssh example.com

Chỉ cần hoạt động, hãy nhớ định cấu hình IP proxy SOCKS trong /etc/tsocks.conf


quá phức tạp để có một tệp cấu hình
Jiang YD

1

Lệnh sau sẽ làm, chỉ sử dụng nc:

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

Mặc định là HTTP proxy, có proxy HTTP chạy trên cổng 7000.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.