http proxy qua ssh, không phải vớ


30

Câu hỏi rất đơn giản, nhưng câu trả lời là không:

ssh -D 8080 user@host

hoặc là

ssh -gCNf -D 8080 user@host

hoặc là

wathever with -D #

Tôi cần một loại proxy mà tôi có thể sử dụng với biến http_proxy, trong một thiết bị nhúng không hỗ trợ SOCKS.

Tôi nên làm gì?


Có nên không ssh -D user@host:8080?
ngen

Tôi đã thực hiện nó với ssh một thời gian trở lại .. vnc thông qua ssh. nhưng bạn có thể giả sử sử dụng mực (proxy http) thông qua ssh. Không thể nhớ lại làm thế nào tôi đã làm điều đó vào lúc này. đó không phải là -D 'cos (như bạn biết - và tốt hơn tôi) -D là SOCKS nếu tôi nhớ lại.
barlop

@ngen: Không. Chỉ -Dđịnh một cổng để mở đường hầm chứ không phải cổng để kết nối. (Ngay cả cổng kết nối được chỉ định là -p port, không :port, vì lý do tương thích.)
grawity

Câu trả lời:


33

Phương pháp 1: Sử dụng proxy HTTP hỗ trợ sử dụng SOCKS ngược dòng, ví dụ: Polipo hoặc Privoxy.

Trước tiên, hãy thiết lập một -Dđường hầm qua SSH như mọi khi, sau đó định cấu hình proxy HTTP để sử dụng đường hầm SSH - ví dụ cấu hình Polipo:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

Cuối cùng, trỏ ứng dụng tới Polipo bằng cách sử dụng http_proxy=localhost:8118.

Phương pháp 2: Chạy chương trình của bạn bên trong torsockstrình bao bọc (hoặc cũ hơn tsocks), nó ủy nhiệm tất cả các kết nối trong suốt. Nó có nghĩa là để sử dụng với Tor, nhưng hoạt động với bất kỳ máy chủ SOCKS nào, bao gồm cả ssh -D.

Phương pháp 3: Thiết lập proxy HTTP trên máy chủ của bạn , sau đó sử dụng ssh -Lđể truy cập nó.


Privoxy là giải pháp tốt nhất. Cảm ơn rất nhiều.
Seyed Morteza

18

Mỗi -Dkết quả vào một máy chủ SOCKS. Nếu khách hàng của bạn không thể xử lý SOCKS quên -D.

Bạn phải chạy Proxy HTTP trên máy chủ từ xa và chuyển tiếp với -L:

ssh -f -N -n -L8080:127.0.0.1:8080 host

2
Để chạy proxy, tôi thấy "tinyproxy" siêu đơn giản và được cấu hình hợp lý theo mặc định. Trên máy chủ từ xa Ubuntu / etc, chỉ cần "sudo apt-get install tinyproxy", sau đó chuyển tiếp tới cổng 8888 như trên: "ssh -L8888: 127.0.0.1: 8888"
Jimbly

7

Tôi có cùng một vấn đề muốn sử dụng HTTP proxy thông qua SSH. Bởi vì nhiều ứng dụng chỉ hỗ trợ proxy HTTP và proxy HTTP rất dễ sử dụng trong môi trường dòng lệnh.

Mặc dù đã tìm kiếm một vài trang nhưng tôi không thể tìm thấy cách trực tiếp (có thể được kết nối với Polipo, Privoxy hoặc tsocks) để làm điều này ...

Sau một ngày làm việc, tôi đã hoàn thành một phiên bản Golang proxy HTTP đơn giản qua SSH. Hãy chơi với nó: mallory .

Hiện tại chỉ hỗ trợ khóa RSA (nằm ở $ HOME / .ssh / id_rsa) và ủy quyền mật khẩu.

hostlà địa chỉ máy chủ SSH, port22nếu không được thay đổi bởi admin của bạn. Phía máy chủ chỉ là người bạn cũ của chúng tôi sshdvới cấu hình bằng không.

mallory -engine=ssh -remote=ssh://host:port

hoặc với tên người dùng user

mallory -engine=ssh -remote=ssh://user@host:port

hoặc với tên người dùng uservà mật khẩu1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

Sau khi kết nối, proxy HTTP sẽ phục vụ trên localhost: 1315.


4
ssh -L 8080:localhost:12345 user@host

Điều này sẽ mở cổng 8080 trên máy cục bộ và chuyển tiếp tất cả dữ liệu sang cổng 12345 trên localhost, như được thấy từ máy từ xa.


2
Đừng quên, bạn cũng phải có proxy HTTP chạy trên máy chủ từ xa. Chuyển tiếp cổng tự nó sẽ không giúp đỡ.
Jonathan

2

Chạy Privoxy tại máy chủ từ xa, sau đó kết nối qua SSH với Privoxy bằng -Ltùy chọn:

-L [bind_address:] port: host: hostport
         Chỉ định rằng cổng đã cho trên máy chủ (máy khách) cục bộ sẽ là
         chuyển tiếp đến máy chủ và cổng đã cho ở phía xa. Điều này
         hoạt động bằng cách phân bổ một ổ cắm để nghe cổng ở phía địa phương,
         tùy chọn ràng buộc với bind_address được chỉ định. Bất cứ khi nào một con-
         nection được thực hiện cho cổng này, kết nối được chuyển tiếp qua
         kênh bảo mật và kết nối được thực hiện với cổng máy chủ
         hostport từ máy từ xa.

( nguồn manpage )


1

Bạn cũng có thể sử dụng nút chai (GPL)

Thêm phần sau vào .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p

corkscrew chạy ssh qua một proxy http, không phải ngược lại được yêu cầu.
eMBee
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.