Thêm chuyển tiếp cổng theo chương trình trên phiên SSH ControlMaster


9

Tôi vừa tìm hiểu về tính năng ControlMaster / ControlPath của OpenSSH, cho phép bạn sử dụng một kết nối SSH duy nhất để chạy nhiều thiết bị đầu cuối.

Vì tôi thường sử dụng SSH để sử dụng chuyển tiếp cổng để nhận các phiên VNC được mã hóa và xác thực, tôi nhận ra ngay rằng bạn không thể thêm chuyển tiếp cổng vào máy chủ từ xa mà bạn đã có kết nối được thiết lập. Điều này thật tệ

Đôi khi sau đó tôi phát hiện ra rằng bạn có thể phá vỡ giới hạn này bằng cách nhập ~ C trong phiên cuối SSH đang chạy. Điều này mở ra một dòng lệnh cho phép bạn thêm hoặc loại bỏ chuyển tiếp cổng.

Câu hỏi của tôi bây giờ là: Làm cách nào tôi có thể thêm chuyển tiếp cổng trên phiên SSH hiện có đang sử dụng tính năng ControlMaster / ControlPath mà không cần phải có quyền truy cập vào phiên cuối trong phiên SSH đó. Tôi cần điều này để kích hoạt tập lệnh khởi động kết nối VNC được bảo mật để tôi thêm và sau đó xóa chuyển tiếp cổng của nó.

(Tôi biết rằng tôi có thể sử dụng bộ ghép kênh đầu cuối như GNU Screen hoặc tmux, thực ra tôi đã làm điều này rồi. Nhưng tôi thích ý tưởng sử dụng chỉ một phiên SSH vì lý do máy chủ.)


1
Tôi sẽ bị xen vào khi thấy nếu bạn tìm ra cách để làm điều này, nhưng tôi nghi ngờ bạn sẽ không làm thế. Lập trình kiểm soát các thuộc tính của phiên SSH bạn thực sự không phải là một phần của vấn đề bảo mật lớn.
Caleb

1
Vô lý! Làm thế nào để lập trình kiểm soát các thuộc tính của phiên SSH giới thiệu một vấn đề bảo mật lớn? Giải pháp thực sự khá đơn giản: serverfault.com/a/340361/93109
aculich

Câu hỏi bây giờ chỉ hỏi về việc thêm cổng chuyển tiếp để phù hợp hơn với câu trả lời được chấp nhận. Tôi đã hỏi một câu hỏi về cách loại bỏ chúng sau đó tại đây: serverfault.com/q/457295/50950
aef

Câu trả lời:


9

Điều đó khá đơn giản, thực sự. Chỉ cần thêm ctl_cmd -O forwardvào lệnh hiện có của bạn, do đó:

ssh -M -L5555:localhost:22 remotehost

trở thành:

ssh -O forward -M -L5555:localhost:22 remotehost

Các sshtrang người đàn ông thảo luận về các -O ctl_cmdtùy chọn:

-O ctl_cmd
        Control an active connection multiplexing master process.  When the -O option is
        specified, the ctl_cmd argument is interpreted and passed to the master process.
        Valid commands are: “check” (check that the master process is running), “forward”
        (request forwardings without command execution), “exit” (request the master to
        exit), and “stop” (request the master to stop accepting further multiplexing
        requests).

Tất nhiên, điều này giả sử bạn đã kích hoạt ControlMaster yestrong ~/ssh/configtệp của mình hoặc -Mtrên dòng lệnh.


1
Bạn có thể vui lòng thử trả lời câu hỏi liên quan ở đây không: serverfault.com/q/457295/50950
aef
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.