Có một số trường hợp chúng ta cần kết nối với các tài nguyên trên máy chủ nhưng vì lý do bảo mật mà các tài nguyên đó nằm trên máy chủ có tường lửa hoặc nằm trong mạng riêng nên bạn không thể kết nối được. Bạn có thể giải quyết vấn đề này bằng cách sử dụng VPN hoặc đơn giản là sử dụng Chuyển tiếp cổng SSH.
Chuyển tiếp cảng địa phương
Công dụng đầu tiên của SSH Port Forwarding là sử dụng nó để kết nối với tài nguyên trên các máy chủ có Firewall .
Ví dụ, chúng tôi có một mã cục bộ cần kết nối với Redis trên máy chủ, nhưng máy chủ của chúng tôi bị tường lửa chặn trên cổng 6379, vì vậy từ bên ngoài, chúng tôi không thể kết nối với nó. Chúng tôi sẽ sử dụng SSH Port Forwarding với cú pháp sau:
1 2 |
<span class="token function">ssh</span> -L localhost: <span class="token operator"><</span> local-port <span class="token operator">></span> :localhost: <span class="token operator"><</span> remote-address-port <span class="token operator">></span> <span class="token operator"><</span> username <span class="token operator">></span> @ <span class="token operator"><</span> server-ip <span class="token operator">></span> |
Ví dụ: máy chủ có IP là 172.168.65.117 và tên người dùng là ec2-user, trong đó có một Redis con đang chạy ở cổng 6379.
1 2 |
<span class="token function">ssh</span> -L localhost:6379:localhost:6379 ec2-user@172.168.65.117 |
Bạn có thể xóa localhost ngay từ đầu.
1 2 |
<span class="token function">ssh</span> -L <span class="token number">6379</span> :localhost:6379 ec2-user@172.168.65.117 |
Lúc này chúng ta chỉ cần kết nối với localhost:6379
là có thể truy cập con Redis trên máy chủ.
Máy chủ Bastion
Trường hợp sử dụng tiếp theo của SSH Port Forwarding là sử dụng nó để kết nối với các tài nguyên nằm trong Mạng riêng .
Chúng ta sẽ gặp trường hợp này nhiều nhất khi chúng ta sử dụng Cloud, ví dụ với AWS chúng ta sẽ tạo Amazon Relational Database Service (RDS) trong một mạng riêng, tất nhiên vì mạng bị đóng nên chúng ta sẽ không thể kết nối với nó. . RDS từ bên ngoài, cách phổ biến mà mọi người sử dụng là tạo Máy chủ lưu trữ Bastion và chúng tôi sẽ kết nối với RDS thông qua máy chủ pháo đài này.
Chúng tôi sẽ sử dụng SSH Port Forwarding với cú pháp sau:
1 2 |
<span class="token function">ssh</span> -L localhost: <span class="token operator"><</span> local-port <span class="token operator">></span> : <span class="token operator"><</span> remote-address <span class="token operator">></span> : <span class="token operator"><</span> remote-address-port <span class="token operator">></span> <span class="token operator"><</span> username <span class="token operator">></span> @ <span class="token operator"><</span> bastion-host-ip <span class="token operator">></span> |
Ví dụ: với máy chủ pháo đài có IP 172.168.65.117, tên người dùng của máy chủ pháo đài là ec2-user, địa chỉ của RDS là postgres.123456789012.us-east-1.rds.amazonaws.com
chạy trên cổng 5432.
1 2 |
<span class="token function">ssh</span> -L <span class="token number">5432</span> :postgres.123456789012.us-east-1.rds.amazonaws.com:5432 ec2-user@172.168.65.117 |
Tại thời điểm này, chúng ta chỉ cần kết nối với localhost:5432
để có thể truy cập RDS trong mạng riêng.
Sự kết luận
Trên đây là 2 trường hợp sử dụng phổ biến của SSH Port Forwarding, bạn có thể tham khảo các trường hợp sử dụng khác tại đây: SSH Port Forwarding – Why và How . Hy vọng bài viết này sẽ hữu ích với bạn.