Quay lại blog
Tháng Năm 23, 2026Hướng dẫn

Cách Thiết Lập SFTP để Truyền File An Toàn

Dùng OpenSSH cho upload SFTP lên VPS: tạo user, jail chroot và kết nối với FileZilla hoặc WinSCP.

Cách Thiết Lập SFTP để Truyền File An Toàn

SFTP (SSH File Transfer Protocol) cung cấp upload và download file được mã hóa mà không cần daemon FTP riêng. Trên VPS Linux, SFTP tích hợp sẵn trong OpenSSH — hướng dẫn này cho thấy thiết lập an toàn trên server Hiddence.

SFTP với user riêng

Tạo user chỉ để upload file:

bash
sudo adduser sftpuser
sudo passwd sftpuser

# Test SFTP from client:
sftp sftpuser@YOUR_VPS_IP

# Or use FileZilla: Protocol SFTP, port 22

Jail chroot (khuyến nghị)

Giới hạn user trong một thư mục duy nhất để bảo mật:

bash
sudo mkdir -p /var/sftp/sftpuser/upload
sudo chown root:root /var/sftp/sftpuser
sudo chmod 755 /var/sftp/sftpuser
sudo chown sftpuser:sftpuser /var/sftp/sftpuser/upload

sudo nano /etc/ssh/sshd_config

# Add at end:
Match User sftpuser
    ChrootDirectory /var/sftp/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

sudo systemctl restart sshd

Kết nối từ desktop

Client phổ biến hỗ trợ SFTP sẵn:

  • FileZilla — Host: sftp://YOUR_VPS_IP, Port: 22, Logon Type: Normal
  • WinSCP — Protocol: SFTP
  • macOS Finder — Connect to Server: sftp://user@IP
  • Linux: sftp user@IP or scp file user@IP:/path/
  • VS Code — Remote SSH extension for direct editing

Checklist bảo mật

  • Dùng khóa SSH thay vì mật khẩu cho user SFTP khi có thể
  • Không bao giờ chia sẻ quyền SFTP root cho bên thứ ba
  • Tắt xác thực mật khẩu cho root trong sshd_config
  • Dùng chroot cho tài khoản chỉ upload
  • Kết hợp với Fail2ban trên cổng SSH
  • Firewall: chỉ mở cổng 22 từ IP tin cậy nếu có thể

Mẹo

  • SFTP không phải FTP — không mở cổng 21 trừ khi cần FTP cũ
  • Với WordPress, ưu tiên khóa SSH + sftp trong wp-config hoặc công cụ deploy
  • rsync qua SSH nhanh hơn cho di chuyển lớn
  • Kiểm tra quyền nếu upload thất bại (755 thư mục, 644 file)
  • Sau thay đổi sshd_config, luôn test SSH ở phiên thứ hai trước khi đóng