🧠 Tình huống cần giải quyết
Máy công ty không mở port để SSH từ bên ngoài (Internet) vào. Tuy nhiên, máy này có thể SSH ra ngoài, ví dụ đến 1 máy chủ trung gian (VPS) trên Internet.
💡 Giải pháp: SSH Reverse Tunnel
Dùng máy công ty SSH ra máy chủ trung gian và mở một reverse tunnel, cho phép bạn kết nối vào máy công ty từ VPS đó.
⚙️ Chuẩn bị
Thành phần | Mô tả |
---|---|
🖥️ Máy công ty | Máy trong mạng LAN, không mở port public |
☁️ VPS trung gian | Máy chủ ngoài Internet (bạn kiểm soát) |
💻 Máy cá nhân | Máy ở nhà (hoặc bất kỳ đâu) dùng để truy cập vào máy công ty qua VPS |
1️⃣ Trên máy công ty
Chạy lệnh sau để thiết lập reverse tunnel đến VPS:
ssh -R 2222:localhost:22 user_vps@your-vps-ip
Giải thích:
-R 2222:localhost:22
: Yêu cầu VPS mở port 2222, bất kỳ ai SSH vào VPS với port 2222 sẽ được chuyển tiếp đến port 22 (SSH) của máy công ty.user_vps@your-vps-ip
: Tài khoản SSH đến VPS. trong trường hợp VPS dùng port khác port 22 để SSH bạn có thể thêm-p sh-port-of-vps
để dùng port đó
Bạn có thể chạy lệnh này tự động bằng cron hoặc systemd service (bên dưới có hướng dẫn).
2️⃣ Trên VPS (chỉ lần đầu)
Cho phép remote port forwarding:
Mở file:
/etc/ssh/sshd_configs
Tìm và sửa:
GatewayPorts yes
AllowTcpForwarding yes
Rồi restart SSH:
sudo systemctl restart ssh
3️⃣ Trên máy cá nhân
Từ máy cá nhân (bên ngoài), SSH vào máy công ty qua VPS như sau:
ssh -t user_vps@your-vps-ip -p ssh-port-of-vps 'ssh -p 2222 user_company@localhost'
user_company
: Tài khoản trên máy công tyyour-vps-ip
: Chính là VPS trung gian-p 2222
: Vì tunnel đã forward port 2222 từ VPS về máy công ty
4️⃣ Tự động hóa (máy công ty)
Tạo service để máy công ty giữ kết nối liên tục với VPS, kể cả khi mất mạng:
nano ~/.reverse_ssh.sh
#!/bin/bash
while true; do
ssh -o "ServerAliveInterval=60" -o "ExitOnForwardFailure=yes" -N -R 2222:localhost:22 user_vps@your-vps-ip -p ssh-port-of-vps
sleep 5
done
chmod +x ~/.reverse_ssh.sh
Thêm vào cron:
crontab -e
@reboot /home/username/.reverse_ssh.sh
✅ Kết luận
Bạn đã thiết lập:
- Máy công ty ➝ giữ SSH tới VPS
- Máy cá nhân ➝ SSH tới VPS, qua đó kết nối được về máy công ty
Article Categories:
Uncategorized