Cổng đường hầm an toàn thông qua máy chủ trung gian


23

Tôi đang tìm cách chuyển một cảng cho VNC trở về nhà của tôi ở đây. Tôi phải nhảy qua một máy chủ duy nhất để nhảy vào máy làm việc thực tế của mình.

  • sittinghere sẽ là máy địa phương của tôi
  • hopper sẽ bởi bước nhảy trung gian tôi cần thực hiện
  • overthere sẽ là máy làm việc từ xa

Tôi có thể làm điều này để SSH vào máy làm việc của mình:

ssh -t hopper "ssh -t overthere"

Tôi muốn sử dụng chuyển tiếp cổng để chuyển tiếp cổng từ xa 5900 overtheresang cổng cục bộ 5900 trên sittinghere. Tuy nhiên, tôi muốn có thể làm điều đó mà không cần ràng buộc với một cổng công khai hoppervì bất kỳ ai trên máy đó đều có thể gắn vào kết nối VNC của tôi.

Có cách nào để tôi chuyển tiếp cổng đó đến máy cục bộ của mình một cách an toàn mà không ai có thể truy cập vào nó hopperkhông?


Bạn đang sử dụng ứng dụng khách VNC nào?
slm

Câu trả lời:


18

Sử dụng khả năng riêng của SSH để chuyển tiếp cổng. Từ sittingherethực thi:

 ssh -v -N -L 5900:overthere:5900 user@hopper

Trỏ máy khách VNC của bạn localhost:5900và lưu lượng sẽ được chuyển overthere:5900qua kết nối SSH được thiết lập trênhopper


1
AFAIK, giải pháp này sẽ không giúp bạn nếu 5900 chỉ bị ràng buộc trên giao diện cục bộ (127.0.0.1), khi đường hầm xảy ra hopper, và sau đó hopperchuyển tiếp tất cả lưu lượng truy cập đến overthere:5900. Nếu overthere:5900đang nghe 0.0.0.0hoặc giao diện đã cho, thì nó sẽ hoạt động, nhưng không nghe nếu nó nghe 127.0.0.1.
Naftuli Kay

18

Tôi đã kết thúc bằng cách sử dụng một số ~/.ssh/confighack SSH để thực hiện điều này:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

Điều này làm là khi tôi cố gắng kết nối ssh overtheretừ sittingheređó, nó sẽ kết nối hoppervà sau đó ủy quyền kết nối SSH tới cổng 22 trên overthere(tức là: bật SSH overthere).

Điều này có một số tác dụng phụ tuyệt vời:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

Mọi thứ hoạt động tuyệt vời và theo như tôi có thể nói, 5900 không được mở hopper, chỉ được chuyển tiếp trực tiếp từ overtheređến sittinghere.


Ngẫu nhiên, đáng lẽ tôi nên hỏi điều này trong các bình luận trước đây nhưng giải pháp bạn tình cờ gặp phải là ra khỏi trang x11nvc man 8-). Xin lỗi tôi không nghĩ hỏi bạn đang sử dụng máy chủ VNC nào.
slm

Điều này làm tôi sợ bejeezus, nhưng nó chắc chắn hoạt động!
Dale Anderson

1
Trong một số bản phân phối Linux (ví dụ Ubuntu 14.04), netcat-openbsd được cài đặt theo mặc định. Trong trường hợp này, hack này có thể không hoạt động. Để khắc phục sự cố này, trước tiên bạn nên cài đặt gói truyền thống netcat ( apt-get install netcat-traditional -y). Sau đó, bạn nên xác định rõ ràng ncloại trong tệp cấu hình (bằng cách thay thế ncbằng nc.traditional).
VeLKerr

@Naftuli: Thật tuyệt vời!
đi

1
@AlexanderPozdneev netcat .
taylorthurlow

1

Bạn có thể chuyển tiếp một cổng từ sittingheređể overthere's cổng SSH qua hopper. Sau đó, bạn có thể sử dụng cổng đó để tiếp cận overtheretrực tiếp từ sittinghere. Trong phiên SSH thứ hai này, bạn có thể chuyển tiếp VNC hoặc bất kỳ cổng nào khác mà bạn thích trong khi hopperchỉ thấy một phiên SSH được mã hóa.

Phiên SSH đầu tiên:

ssh -f -N -L 7022:overthere:22 hopper

Bây giờ hãy nói với máy khách SSH cách nó có thể tiếp cận overtherebằng cách thêm cấu hình này ~/.ssh/configvàosittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

Phiên SSH thứ hai:

ssh -f -N -L 5900:localhost:5900 overthere

Hoặc chỉ là một phiên SSH tương tác thông thường mà không có đường hầm cổng VNC:

ssh overthere

Nếu bạn không muốn thêm dòng vào, ~/.ssh/configbạn vẫn có thể cho nó biết cách kết nối overtheretừ dòng lệnh:

ssh -p 7022 hopper

... nhưng không có HostKeyAliasSSH sẽ không xác minh overtherechính xác dấu vân tay của khóa.

Tất cả các dòng lệnh sẽ được chạy từ sittinghere.

Ngẫu nhiên, tôi nghĩ rằng có thể bạn không cần phải sử dụng ssh's -tlựa chọn.


1

Đầu tiên kết nối phễu trong khi làm đường hầm giữa worker và home pc.

ssh -f ismail@hopper -L 2222:overthere:22 -N

sau đó làm cho ssh ro overthere với vnc đường hầm

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

Bây giờ bạn có thể kết nối với vnc. Bằng cách thay đổi cấu hình của vnc để nghe localhost


0

Nếu bạn đang sử dụng máy khách VNC vncviewertừ dòng lệnh, bạn có thể sử dụng công -viatắc để thông báo cho đường hầm thông qua user@hosttrước khi kết nối với máy chủ VNC của một số máy chủ khác.

Thí dụ

$ vncviewer -via user@host localhost:0

Bạn cũng có thể sử dụng vinagređể kết nối thông qua một đường hầm SSH như vậy thông qua GUI. Để làm như vậy, hãy thiết lập kết nối của bạn tương tự như thế này thông qua hộp thoại kết nối trong vinagre:

              ss # 1

Điều này sẽ dẫn đến kết nối của bạn sắp tới, được tạo đường hầm thông qua máy chủ đường hầm SSH.

    ss # 2

Tài liệu tham khảo


0

Theo lệnh cũng sẽ hoạt động hoàn hảo

ssh -f -N -J hopper overthere -L 5900:localhost:5900

Nó đã được thử nghiệm với tham số bổ sung để kết nối máy chủ PostgreSQL trên postgres-servercổng tùy chỉnh ( -pchuyển đổi) và cũng bằng cách sử dụng tên người dùng tùy chỉnh.

ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432

Như bạn có thể thấy giải pháp đó đơn giản và không yêu cầu bất kỳ thay đổi cấu hình nào của ssh hoặc bất kỳ bước trung gian nào.

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.