Tôi có hai máy, Client và Server.
Máy khách (người đứng sau tường lửa công ty) mở đường hầm SSH ngược tới Máy chủ, có địa chỉ IP có thể truy cập công khai, sử dụng lệnh này:
ssh -nNT -R0: localhost: 2222 insecure@server.example.com
Trong OpenSSH 5.3+, việc 0
xảy ra ngay sau -R
phương tiện "chọn một cổng khả dụng" thay vì gọi một cách rõ ràng cho một cổng. Lý do tôi làm điều này là vì tôi không muốn chọn một cổng đã được sử dụng. Trong thực tế, có rất nhiều Khách hàng ngoài kia cần thiết lập các đường hầm tương tự.
Vấn đề ở thời điểm này là máy chủ không biết Client nào là cái nào. Nếu chúng tôi muốn kết nối lại với một trong những Khách hàng này (thông qua localhost) thì làm sao chúng tôi biết cổng nào đề cập đến khách hàng nào?
Tôi biết rằng ssh báo cáo số cổng cho dòng lệnh khi được sử dụng theo cách trên. Tuy nhiên, tôi cũng muốn sử dụng autossh để duy trì các phiên hoạt động. autossh chạy tiến trình con của nó thông qua fork / exec, có lẽ, do đó đầu ra của lệnh ssh thực tế bị mất trong ether.
Hơn nữa, tôi không thể nghĩ ra bất kỳ cách nào khác để có được cổng từ xa từ Máy khách. Vì vậy, tôi tự hỏi nếu có một cách để xác định cổng này trên Máy chủ.
Một ý tưởng tôi có là bằng cách nào đó sử dụng / etc / sshrc, được cho là một tập lệnh chạy cho mọi kết nối. Tuy nhiên, tôi không biết làm thế nào một người có được thông tin thích hợp ở đây (có lẽ là PID của quy trình sshd cụ thể xử lý kết nối đó?) Tôi thích một số gợi ý.
Cảm ơn!