Cấp cho máy chủ quyền truy cập Internet, thông qua ứng dụng khách kết nối bằng SSH


17

Tôi có thể sử dụng máy tính gia đình A của mình để kết nối bằng SSH với máy chủ B nơi truy cập vào mạng bên ngoài bị chặn. Nói cách khác, tất cả các yêu cầu Internet từ B đều báo lỗi: Mạng không thể truy cập được . Tôi có thể chuyển hướng tất cả các yêu cầu này để đi qua máy tính A có quyền truy cập không hạn chế vào Internet không?

Máy chủ B là máy chủ lưu trữ một trong các trang web của tôi. Tôi muốn tải tập tin để cài đặt một số phần mềm. Nhưng kết nối bị chặn. Tôi đã có thể chuyển các tập tin nhưng nó đã phức tạp vì các phiên bản phần mềm khác nhau trên MộtB , do đó phụ thuộc nơi khác nhau và nó đòi hỏi các file khác nhau trên MộtB .

Tôi đã tìm kiếm trên Internet và dường như tôi cần một đường hầm ngược. Nhưng tôi chỉ tìm thấy giải pháp trong đó một cổng được chuyển hướng . Nhưng đó không phải là thứ tôi cần vì tôi không muốn B truy cập vào A mà là Internet.


Nếu người đánh giá thấp câu hỏi này thấy bình luận này, bạn có phiền khi cho chúng tôi biết lý do không? Tôi không thấy có gì sai với nó, ngay cả khi câu trả lời là "không thể".
strugee


ssh cho phép bạn thực hiện chuyển tiếp cổng cục bộ hoặc từ xa - tức là khi một ứng dụng trên B cố gắng mở một cổng cục bộ X, được chuyển tiếp đến A như một nỗ lực để mở bất kỳ cổng nào bạn đã chỉ định. Vì vậy, sau đó A được tự do chuyển tiếp yêu cầu kết nối đó ra Internet. Bạn chưa đề cập đến (các) cổng hoặc giao thức nào bạn đang cố sử dụng, điều đó sẽ giúp việc xây dựng các câu trả lời chi tiết dễ dàng hơn.
Stablesog

Tôi đang cố gắng sử dụng trình soạn thảo , vì vậy đó phải là các yêu cầu HTTP và HTTPS để github để tải xuống các gói.
AL

Câu trả lời:


8

Bạn có thể chạy proxy trên Máy tính A mà máy tính B sau đó sẽ kết nối để truy cập internet thông qua Máy tính A.

Một cái gì đó như thế này

             +----------+            +-----------+
             |          |+----SSH+-->|           |
             |     A    |            |    B      |
             |+--------+|            |           |
  Internet <-++-+PROXY<++<SSH Tunnel--+          |
             |+--------+|            |           |
             +----------+            +-----------+

Cài đặt proxy như mực trên A, nghe trên cổng 3128 và sau đó bạn có thể ssh đến máy chủ bằng cách này -
ssh -L 3128:127.0.0.1:3128 user@B

Điều đó sẽ cho phép B truy cập internet thông qua A


Sau khi kết nối với B, các yêu cầu tới Internet sẽ được chuyển hướng đến A như thế nào? Không có cấu hình để thay đổi?
AL

Bạn sẽ cần đặt máy chủ proxy trên B thành 127.0.0.1:3128
Lawrence

10

Chỉ cần thêm một số bước rõ ràng hơn vào câu trả lời của @Lawrence và @ SpiRail.

Thực hiện cài đặt như sau:

Thiết lập trên máy chủ A:

  1. Cài đặt máy chủ proxy Mực trên Máy chủ A. Theo mặc định, Squid lắng nghe trên cổng 3128.
    yum install squid
  2. Nhận xét http_access deny allsau đó thêm http_access allow allvào /etc/squid/squid.conf
  3. Nếu chính máy chủ A sử dụng một số proxy, hãy nói 10.140.78.130:8080 để kết nối với internet, sau đó thêm proxy đó vào /etc/squid/squid.confnhư sau:
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
cache_peer 10.140.78.130 parent 8080 0 no-query default
never_direct allow all

Thiết lập trên máy chủ B:

  1. Thêm các mục sau vào / etc / môi trường
export http_proxy=http://127.0.0.1:3129
export https_proxy=http://127.0.0.1:3129
  1. source /etc/environment

Bây giờ thiết lập của chúng tôi đã hoàn tất.

Tạo đường hầm SSH với chuyển tiếp cổng từ xa

  1. Chạy lệnh SSH sau từ Máy chủ A
    ssh -R 3129:localhost:3128 user@HostB

    Nếu bạn muốn tạo đường hầm SSH liên tục, bạn có thể sử dụng autossh như sau:
    autossh -M 20000 -f -NT -R 3129:localhost:3128 user@HostB
    Để lệnh autossh ở trên hoạt động, bạn nên cài đặt SSH Keys từ HostA sang HostB

  2. Điều này sẽ cho phép Host B truy cập internet thông qua Host A.

Kiểm tra internet:

  1. Chạy lệnh sau từ Host B
    wget https://google.com

Sơ đồ luồng giao thông : nhập mô tả hình ảnh ở đây


5

Câu trả lời của @Lawrence là đủ tốt để tôi giải quyết tất cả. Nhưng đây là các bước chi tiết hơn tôi đã sử dụng.

Tôi đã sử dụng điều này cho việc sử dụng máy tính xách tay 4g dongle của mình để định tuyến internet đến một raspberry pi với kết nối đường dây cố định đến bộ định tuyến wifi.

Nếu máy chủ của bạn là máy mac: hãy cài đặt squidman http://squidman.net/squidman/

(không chỉ mực chung chung, tôi đã gặp quá nhiều khó khăn khi xây dựng nó) Các thiết lập mặc định có vẻ đủ tốt cho tôi.

kết nối với 4g kết nối với wifi - cấu hình một ip tĩnh trên wifi của bạn và xóa địa chỉ cổng (trừ khi bạn đang làm những việc nâng cao) nếu không bạn sẽ có hai tuyến mặc định và rất khó chịu. - đảm bảo bộ định tuyến wifi của bạn không sử dụng cùng phạm vi 192.168.xy (định cấu hình "x" khác trong trường hợp này)

ssh -R 8080:localhost:8080 pi@<ip address of the pi or target machine>

Trên PI

export http_proxy=http://localhost:8080

với visudo thêm văn bản:

Defaults env_keep = "http_proxy https_proxy ftp_proxy"

Bây giờ wget sẽ hoạt động và sudo apt-get cũng vậy để bạn có thể cài đặt các gói.

Nếu bạn cũng muốn git ở đây: /programming/128035/how-do-i-pull-from-a-git-reposeective- phiên-an-http-proxy


Cảm ơn câu trả lời của bạn. Vai trò của visudoở đây là gì? Nơi nào bạn thêm văn bản? (Tôi không thể sử dụng sudotrên máy chủ lưu trữ web của mình)
AL

Tôi không thực sự hiểu câu hỏi của bạn, nhưng nếu bạn chỉ cần nhập visudo vào terminal (bạn có thể cần một 'sudo visudo'), bạn có thể thêm dòng văn bản vào cuối.
SpiRail 18/03/2016

không có quyền truy cập root trên lưu trữ web của tôi.
AL

Đó là một thời gian dài trước đây. Nhưng từ bộ nhớ visudo chỉnh sửa tệp sudoers và dòng được thêm có nghĩa là các biến môi trường người dùng đó được giữ khi gõ sudo. Nếu bạn không thể làm sudo, thì dù sao bạn cũng không cần bước này.
SpiRail
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.