banner
Jun 1, 2025
3 Views

Hướng dẫn thiết lập reverse SSH tunnel để truy cập vào máy trong mạng công ty (đằng sau NAT hoặc firewall) mà không cần mở port ra ngoài Internet

Written by
banner

🧠 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ầnMô tả
🖥️ Máy công tyMáy trong mạng LAN, không mở port public
☁️ VPS trung gianMáy chủ ngoài Internet (bạn kiểm soát)
💻 Máy cá nhânMá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 ty
  • your-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
banner

Leave a Reply

Your email address will not be published. Required fields are marked *