Đối với một lần, hoặc dù sao, thỉnh thoảng, tình huống phương pháp ProxyCommand dễ dàng là một cách rất thuận tiện.
Mặt khác, nếu bạn cần một số kết nối đồng thời hoặc khi có lẽ bạn cần sử dụng lệnh đó thường xuyên cho công việc hàng ngày, thay vào đó, bạn cũng có thể xem xét để đặt quy tắc dịch địa chỉ mạng (NAT) trên máy chủ của mình.
Điều này yêu cầu siêu người dùng (thường root
) truy cập trên máy chủ của bạn để áp dụng quy tắc NAT duy nhất trước tiên. Lưu ý rằng nó có thể không được phép (hoặc hiệu quả) ở tất cả để áp dụng các quy tắc NAT, ngay cả khi bạn có quyền truy cập superuser, nếu "máy chủ" của bạn thực sự là một container (như một Docker một) thay vì một máy.
Nói về một hệ thống Linux điển hình với iptables
bộ phần mềm, quy tắc NAT để áp dụng trên máy chủ1 của bạn cho trường hợp mẫu của bạn có thể như sau:
iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109
Lệnh đó ra lệnh cho nhân Linux thực hiện bất kỳ kết nối nào tới cổng server2-port của server2-ip-address để đi ra ngoài bằng cách sử dụng một cổng nguồn được chọn trong phạm vi 33101-33109 có sẵn tại thời điểm đó.
Khi quy tắc đó được áp dụng, bạn kết nối với máy chủ2 chỉ với thông thường:
ssh username@server2 -p remote_port
và bạn có thể sử dụng cùng một ssh
lệnh này đồng thời bao nhiêu lần bạn cần, miễn là có các cổng có sẵn trong phạm vi được chỉ định trong quy tắc NAT.
Tuy nhiên, xin lưu ý rằng netstat
(hoặc lệnh tương đương) chạy trên máy chủ của bạn báo cáo địa chỉ cục bộ của kết nối là số cổng nguồn không được sửa đổi , được chọn ngẫu nhiên, mặc dù lưu lượng truy cập thực tế được gửi đến máy chủ của bạn2 mang số cổng nguồn đã sửa đổi .
Để hoàn tác quy tắc NAT, lệnh này giống nhau ngoại trừ -D
tùy chọn thay cho -I
.
Để áp dụng quy tắc NAT tự động khi khởi động tùy thuộc vào phân phối Linux bạn có trên máy chủ của mình và liệu nó có sẵn cấu hình tường lửa nào đó hay không.
Tôi không có kinh nghiệm với các hệ thống giống như BSD, nhưng tôi tin rằng có một sự tương đương.