Giới thiệu
Có một vài trường hợp ta cần kết nối tới các tài nguyên nằm ở trên máy chủ nhưng vì vấn đề bảo mật nên các tài nguyên đó được đặt ở trên máy chủ có tường lửa (firewall) hoặc được đặt ở trong mạng kín (private network), nên ta không thể kết nối tới nó được.
Mục lục
- Local Port Forward
- Bastion Host
- Kết luận
- Bài viết liên quan
Một vài công ty sẽ giải quyết vấn đề này bằng cách dựng VPN, hoặc đơn giản hơn ta sẽ sử dụng SSH Port Forwarding.
Local Port Forward
Cách sử dụng đầu tiên của SSH Port Forwarding là ta sử dụng nó để kết nối tới tài nguyên ở trên máy chủ mà có tường lửa.
Ví dụ ta có đoạn mã ở local đang cần kết nối tới con Redis ở máy chủ, tuy nhiên con máy chủ của ta bị chặn ở port 6379 bởi tường lửa nên từ bên ngoài ta không thể kết nối tới nó được. Ta sẽ sử dụng SSH Port Forwarding theo cú pháp như sau:
ssh -L localhost:<local-port>:localhost:<remote-address-port> <username>@<server-ip>Ví dụ với máy chủ có IP là 172.168.65.117, username là ec2-user, trong đó có con Redis chạy ở port 6379.
ssh -L localhost:6379:localhost:6379 [email protected]Ta có thể bỏ localhost ở đầu.
ssh -L 6379:localhost:6379 [email protected]Lúc này ở dưới local của ta sẽ mở port 6379, ta chỉ cần kết nối tới localhost:6379 thì có thể truy cập tới con Redis ở máy chủ.
Bastion Host
Cách sử dụng tiếp theo của SSH Port Forwarding là ta sử dụng nó để kết nối tới tài nguyên nằm ở trong Private Network.
Trường hợp này ta sẽ gặp nhiều nhất khi ta sử dụng Cloud, ví dụ với AWS thông thường ta sẽ tạo Amazon Relational Database Service (RDS) ở trong private network, tất nhiên là vì mạng kín nên ta sẽ không thể kết nối được tới RDS từ bên ngoài, cách phổ biến mọi người hay sử dụng là tạo con Bastion Host, và ta sẽ kết nối tới RDS thông qua con bastion host này.
Ta sẽ sử dụng SSH Port Forwarding theo cú pháp như sau:
ssh -L localhost:<local-port>:<remote-address>:<remote-address-port> <username>@<bastion-host-ip>Ví dụ với bastion host có IP là 172.168.65.117, username của bastion host là ec2-user, địa chỉ của RDS là postgres.123456789012.us-east-1.rds.amazonaws.com, chạy ở port 5432. Ta có thể bỏ localhost ở đầu:
ssh -L 5432:postgres.123456789012.us-east-1.rds.amazonaws.com:5432 [email protected]Lúc này ở dưới local của ta sẽ mở port 5432, ta chỉ cần kết nối tới localhost:5432 thì có thể truy cập tới con RDS ở trong private network.
Kết luận
Ở trên là hai cách sử dụng phổ biến của SSH Port Forwarding, các bạn tham khảo các cách sử dụng khác ở đây: SSH Port Forwarding - Why and How. Mong rằng bài này sẽ hữu ích với các bạn.
First AI Journey for DevOps:
- PromptOps: From YAML to AI
- The DevOps AI Advantage
- The AIOps Book