Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

8.2. Truy cập bằng ssh đến máy chủ đứng sau proxy

ICT

Truy cập bằng SSH đến máy chủ đứng sau Proxy (Reverse Proxy làm Gateway)

1. Bối cảnh và bài toán

Trong mô hình triển khai máy chủ hiện đại, đặc biệt với hệ thống có yêu cầu tách lớp mạngtăng cường an toàn, các máy chủ ứng dụng (QMS, AI, DB, …) thường không kết nối trực tiếp ra Internet, mà được đặt đứng sau một máy chủ Proxy/Gateway.

Mô hình này đặt ra một bài toán thực tế:

Làm thế nào để quản trị viên có thể truy cập SSH vào các máy chủ nội bộ (QMS, AI, …) thông qua Proxy, khi các máy chủ này không có IP publickhông được NAT trực tiếp từ router?

Bài viết này hướng dẫn cách truy cập SSH đúng chuẩn trong mô hình đó.


2. Mô hình mạng minh họa

 
Internet
  |
[Router]
  |
[Reverse Proxy - prx]
  |
  enp3s0: 10.10.10.1/24
  |
[QMS Server]
  |
  10.10.10.66/24 
 
  • prx (Reverse Proxy)

    • Có IP LAN với router (ví dụ: 192.168.1.88)

    • Là máy duy nhất được NAT/forward từ router

    • Đóng vai trò:

      • Reverse Proxy (HTTP/HTTPS)

      • Router/NAT cho mạng nội bộ

      • Bastion Host (jump host) cho SSH

  • qms (máy chủ QMS)

    • Nằm trong mạng nội bộ 10.10.10.0/24

    • Không có IP public

    • Gateway trỏ về 10.10.10.1 (prx)


3. Nguyên tắc truy cập SSH trong mô hình này

Nguyên tắc cốt lõi

  1. Không SSH trực tiếp từ Internet vào QMS

  2. Chỉ SSH vào Reverse Proxy

  3. Từ Reverse Proxy → SSH tiếp vào QMS (hop thứ hai)

Reverse Proxy lúc này đóng vai trò Jump Host / Bastion Host.


4. Điều kiện cần trước khi SSH

4.1. Trên Reverse Proxy (prx)

  • SSH server đang chạy:

systemctl status ssh
  • prx truy cập được QMS:

ping 10.10.10.66
ssh user@10.10.10.66

Nếu bước này chưa thành công, cần kiểm tra:

  • IP routing

  • Firewall

  • NAT / forward


4.2. Trên QMS

  • SSH server đang chạy:

systemctl status ssh
  • Default route đúng:

ip route

Kết quả mong muốn:

default via 10.10.10.1 dev enp0s25

5. Cách 1 – SSH thủ công qua Proxy (cách cơ bản, dễ hiểu)

Bước 1: SSH vào Reverse Proxy

Từ máy quản trị (laptop/PC):

 
ssh admin@<IP_public_hoặc_LAN_của_prx>

Ví dụ:

 
ssh admin@192.168.1.88

Bước 2: Từ prx, SSH tiếp vào QMS

 
ssh qmsuser@10.10.10.66

✔ Cách này:

  • Dễ triển khai

  • Dễ debug

  • Phù hợp giai đoạn setup, xử lý sự cố

❌ Nhược điểm:

  • Phải SSH hai lần

  • Không tiện cho automation


6. Cách 2 – SSH một lệnh bằng Jump Host (khuyến nghị)

6.1. Dùng tham số -J

Trên máy quản trị:

ssh -J admin@192.168.1.88 qmsuser@10.10.10.66

Luồng kết nối:

Client → prx → qms

✔ Ưu điểm:

  • Một lệnh duy nhất

  • Chuẩn OpenSSH

  • Rất phù hợp cho sysadmin


6.2. Cấu hình sẵn trong ~/.ssh/config (cách chuyên nghiệp)

Trên máy quản trị, sửa file:

 
nano ~/.ssh/config

Thêm:

Host prx
   HostName 192.168.1.88
   User admin
Host qms
   HostName 10.10.10.66
   User qmsuser
   ProxyJump prx

Sau đó chỉ cần:

ssh qms

✔ Đây là cách làm chuẩn production.


7. Vì sao KHÔNG nên NAT cổng SSH trực tiếp vào QMS?

Lý do an toàn

  • Giảm bề mặt tấn công (attack surface)

  • Chỉ có 1 điểm SSH duy nhất từ Internet

  • Dễ audit log, dễ khóa IP, dễ áp MFA

Lý do quản trị

  • Mở rộng thêm AI, DB, Backup server không cần NAT thêm

  • Không phải nhớ nhiều IP/cổng

  • Phù hợp mô hình Zero Trust / Bastion


8. Checklist kiểm tra nhanh khi SSH không vào được QMS

Trên prx:

ping 10.10.10.66
ssh qmsuser@10.10.10.66

Trên qms:

systemctl status ssh ip route

Kiểm tra firewall prx:

iptables -L FORWARD -n

9. Tổng kết

  • Reverse Proxy không chỉ để reverse HTTP/HTTPS

  • Trong mô hình chuẩn, nó còn là:

    • Gateway

    • Router nội bộ

    • Bastion Host cho SSH

Cách SSH đúng:

  • Internet → prx

  • prx → QMS / AI / server nội bộ

Mô hình này:

  • An toàn

  • Dễ mở rộng

  • Đúng chuẩn hệ thống server thực tế