chỉ với SSH: truy cập web đường hầm ngược thông qua ssh SOCKS proxy


15

Thỉnh thoảng tôi phải kết nối với một máy chủ nơi quyền truy cập bị hạn chế cao.
Chỉ SSH trong nước được cho phép bởi tường lửa DMZ.
Kết nối HTTP đi bị chặn.

Tôi đang tìm kiếm một cách dễ dàng để truy cập web đường hầm thông qua phiên SSH của mình, vì vậy tôi có thể cài đặt các bản cập nhật và phần mềm thông qua yum / apt-get. Lý tưởng nhất, tôi muốn tránh cài đặt phần mềm / dịch vụ bổ sung trong khu vực được bảo vệ.

Bạn làm gì trong tình huống như vậy?

SSH có -D <port>tùy chọn proxy SOCKS. Nhưng thật không may, nó chỉ là một chiều từ máy khách đến máy chủ và không có tùy chọn ngược lại.

Câu trả lời:


26

Cuối cùng tôi cũng đã hoàn thành việc này sshchỉ với :

  1. bắt đầu proxy SOCKS cục bộ trên máy khách của bạn (sử dụng ssh -D)
  2. kết nối với máy chủ từ xa và thiết lập chuyển tiếp cổng ngược ( ssh -R) với proxy SOCKS cục bộ của bạn
  3. cấu hình phần mềm máy chủ để sử dụng proxy được chuyển tiếp

1. Bắt đầu proxy vớ địa phương trong nền

Kết nối với localhost thông qua SSH và mở proxy SOCKS trên cổng 54321.

$ ssh -f -N -D 54321 localhost

-f chạy SSH trong nền.

Lưu ý: Nếu bạn đóng thiết bị đầu cuối nơi bạn bắt đầu lệnh, quy trình proxy sẽ bị hủy. Ngoài ra, hãy nhớ tự dọn dẹp bằng cách đóng cửa sổ thiết bị đầu cuối khi bạn hoàn thành hoặc tự mình giết quá trình!

2. kết nối với máy chủ từ xa và thiết lập chuyển tiếp cổng đảo ngược

Ràng buộc cổng từ xa 6666 đến cổng cục bộ 54321. Điều này làm cho proxy vớ địa phương của bạn có sẵn cho trang web từ xa trên cổng 6666.

$ ssh root@target -R6666:localhost:54321

3. cấu hình phần mềm máy chủ để sử dụng proxy được chuyển tiếp

Chỉ cần cấu hình yum, apt, curl, wget hoặc bất kỳ công cụ nào khác hỗ trợ SOCKS để sử dụng proxy 127.0.0.1:6666.

Voilá! Chúc mừng đường hầm!


4. tùy chọn: cấu hình phần mềm máy chủ để sử dụng proxy được chuyển tiếp

Tôi thấy rằng cài đặt proxychainstrên máy chủ mục tiêu làm cho mọi thứ dễ dàng hơn nhiều.

Nó cho phép bất kỳ phần mềm nào sử dụng proxy SOCKS (chẵn telnet), bằng cách sử dụng một LD_PRELOADmẹo để chuyển hướng các yêu cầu TCP và DNS từ các lệnh tùy ý thành proxy.

Thiết lập /etc/proxychains.confđể sử dụng proxy vớ chuyển tiếp:

[ProxyList]
# SSH reverse proxy
socks5  127.0.0.1 6666

Các công cụ tùy ý đường hầm (sử dụng TCP) với proxychains:

$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update

3

Các phiên bản mới hơn của SSH cho phép sử dụng tùy chọn rất đơn giản ssh-R <[bind_address:]port>. Chỉ sử dụng cổng trên máy chủ và có thể là địa chỉ liên kết, nhưng không chỉ định cổng phía máy khách sẽ tạo proxy SOCKS ngược.

Điều này cũng được nêu trong các trang hướng dẫn của các phiên bản SSH mới hơn:

[...] nếu không có đích rõ ràng được chỉ định, ssh sẽ hoạt động như một proxy SOCKS 4/5 và chuyển tiếp các kết nối đến các đích được yêu cầu bởi ứng dụng khách SOCKS từ xa.

Bạn có thể kiểm tra điều này với cuộn tròn kết nối với một "cho tôi IP của tôi" đơn giản như http://ifconfig.io .

$ curl ifconfig.io

đấu với

$ curl --socks5 localhost:<PORT> ifconfig.io


2
Sẽ rất hữu ích khi đề cập đến số phiên bản mà tính năng đó được giới thiệu.
kasperd

đơn giản hơn nhiều, thanx!
Kaii

1
@kasperd: OpenSSH 7.6 , phát hành vào ngày 2017-10-03. Kiểm tra điểm đạn thứ 3 trong Tính năng mới
MestreLion
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.