Hướng Dẫn Cấu Hình SFTP Server Trên Ubuntu An Toàn, Chi Tiết A-Z
Cấu hình SFTP Server trên Ubuntu là giải pháp bảo mật thiết yếu khi giao thức FTP truyền thống bộc lộ nhiều lỗ hổng truyền dữ liệu dạng plain-text không mã hóa. Nếu bạn đang quản trị máy chủ lưu trữ hoặc chia sẻ tệp tin cho đối tác mà lo ngại rò rỉ tài […]
Cấu hình SFTP Server trên Ubuntu là giải pháp bảo mật thiết yếu khi giao thức FTP truyền thống bộc lộ nhiều lỗ hổng truyền dữ liệu dạng plain-text không mã hóa. Nếu bạn đang quản trị máy chủ lưu trữ hoặc chia sẻ tệp tin cho đối tác mà lo ngại rò rỉ tài khoản, việc triển khai SFTP qua SSH sẽ giải quyết triệt để vấn đề này trên nền tảng máy chủ.
Bài viết sẽ hướng dẫn bạn từng bước thiết lập SFTP Server trên Ubuntu 22.04, từ cài đặt, phân quyền người dùng cho đến các biện pháp tăng cường bảo mật, phù hợp để áp dụng trên một VPS Linux của riêng bạn.
1. Tổng quan về SFTP Server và lợi ích so với FTP thông thường
SFTP (SSH File Transfer Protocol) là một giao thức truyền tệp mạng chạy ngầm trên nền SSH, hỗ trợ mã hóa toàn bộ dữ liệu đăng nhập và nội dung tệp tin truyền tải. Khác với FTP truyền dữ liệu ở dạng văn bản thuần túy rất dễ bị nghe lén, SFTP tận dụng cơ chế an toàn của máy chủ Ubuntu để thiết lập kênh truyền tệp bảo mật toàn diện.
- Bảo mật vượt trội: Toàn bộ dữ liệu truyền qua mạng đều được mã hóa bằng thuật toán SSH tiên tiến, loại bỏ nguy cơ bắt gói tin trung gian.
- Khác biệt với FTP thuần túy: Bạn có thể tìm hiểu thêm về sự khác nhau giữa các phương thức giao tiếp qua bài viết về giao thức truyền file FTP để nắm rõ kiến trúc mạng.
- Cấu hình tiện lợi: Tích hợp sẵn trong gói OpenSSH, không cần cài đặt thêm các ứng dụng máy chủ FTP phức tạp như vsftpd hay ProFTPD.
2. Bước 1: Cập nhật hệ điều hành Ubuntu
Trước khi cấu hình bất kỳ dịch vụ máy chủ nào, việc đảm bảo tất cả các package hệ thống đều ở phiên bản mới nhất là điều bắt buộc nhằm tránh xung đột phần mềm và vá các lỗ hổng hệ thống. Thao tác này tương tự quy trình khi bạn muốn nâng cấp cập nhật Ubuntu định kỳ.
Hãy mở terminal điều khiển của máy chủ và thực thi câu lệnh sau:
sudo apt update && sudo apt upgrade -y
Hệ thống sẽ đồng bộ kho lưu trữ apt và tự động tải về, cài đặt các bản vá lỗi mới nhất cho Ubuntu.

3. Bước 2: Cài đặt dịch vụ OpenSSH Server
Để triển khai SFTP, máy chủ Ubuntu cần có gói openssh-server hoạt động. Gói dịch vụ này chịu trách nhiệm lắng nghe kết nối SSH và quản lý giao thức con SFTP. Nếu máy chủ chưa được kích hoạt, bạn tiến hành cài đặt bằng lệnh:
sudo apt install openssh-server -y
Sau khi quá trình cài đặt hoàn tất, dịch vụ SSH sẽ tự động kích hoạt. Bạn có thể sử dụng các tiêu chuẩn kết nối VPS Linux qua SSH quen thuộc để điều khiển từ xa.

4. Bước 3: Cấu hình chi tiết SSH cho SFTP và cô lập thư mục
Đây là giai đoạn mấu chốt để thiết lập môi trường SFTP chuyên dụng. Chúng ta sẽ giới hạn người dùng chỉ có quyền chuyển tệp tin mà không được cấp quyền mở giao diện dòng lệnh SSH vào máy chủ.
4.1. Chỉnh sửa file cấu hình SSH
Dùng trình soạn thảo văn bản như nano để chỉnh sửa file /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Tìm hoặc thêm một phần trong file dành cho Subsystem SFTP, nội dung sẽ trông như sau:
Subsystem sftp /usr/lib/openssh/sftp-server

4.2. Tạo nhóm người dùng cho SFTP
Bạn có thể tạo một nhóm SFTP và người dùng riêng chỉ để truy cập SFTP, không có quyền SSH. Cách làm như sau:
Tạo nhóm cho người dùng SFTP:
sudo groupadd sftpusers
Thêm hoặc sửa một người dùng để thuộc nhóm SFTP:
Nếu bạn đang tạo một người dùng mới:
sudo useradd -m -G sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

Đối với một người dùng đã tồn tại:
sudo usermod -G sftpusers -s /usr/sbin/nologin existinguser
Được khuyến nghị không sử dụng người dùng root, đặc biệt khi bạn muốn gửi thông tin truy cập cho một người khác. Việc dùng user riêng với shell nologin giúp người nhận chỉ thao tác được với file mà không đăng nhập được vào hệ thống. Nếu bạn cần hiểu thêm về cách phân quyền tài khoản, bài viết về tạo user trên Ubuntu sẽ cung cấp nền tảng hữu ích.
4.3. Tạo và phân quyền thư mục lưu trữ
Tạo thư mục lưu trữ dữ liệu cho người dùng SFTP và thiết lập quyền sở hữu phù hợp:
sudo mkdir -p /home/sftpuser/sftpfiles
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpusers /home/sftpuser/sftpfiles
Ghi chú: Thư mục gốc /home/sftpuser phải thuộc sở hữu của rootvà có quyền phù hợp để Chroot hoạt động. Người dùng sẽ tải lên, tải xuống và quản lý tệp trong thư mục consftpfiles.

4.4. Cấu hình cô lập người dùng trong sshd_config
Mở tệp cấu hình SSH bằng lệnh sau:
sudo nano /etc/ssh/sshd_config
Thêm đoạn cấu hình sau vào cuối tệp để áp dụng chính sách SFTP cho các tài khoản thuộc nhómsftpusers:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Đoạn cấu hình trên buộc người dùng thuộc nhómsftpuserssử dụng SFTP, giới hạn môi trường truy cập trong thư mục home và vô hiệu hóa chuyển tiếp TCP cũng như X11.

Sau khi chỉnh sửa, nhấn Ctrl + O, nhấn Enter để lưu và nhấn Ctrl + X để thoát.
4.5. Kiểm tra cấu hình và xử lý thư mục runtime SSH
Nếu SSH không khởi động được do thiếu thư mục runtime/run/sshd, hãy tạo thư mục và thiết lập quyền truy cập:
sudo mkdir -p /run/sshd
sudo chmod 755 /run/sshd
Tiếp theo, kiểm tra cú pháp cấu hình trước khi khởi động lại dịch vụ:
sudo sshd -t
Nếu lệnh không trả về thông báo lỗi, cấu hình đã vượt qua bước kiểm tra cú pháp. Nếu có lỗi, hãy sửa lỗi trước khi khởi động lại SSH.
5. Bước 4: Khởi động lại dịch vụ SSH
Sau khi hoàn tất cấu hình, thực hiện các lệnh dưới đây để xóa trạng thái lỗi trước đó và khởi động lại dịch vụ SSH trên Ubuntu:
sudo systemctl reset-failed ssh
sudo systemctl restart ssh
Tiếp theo, kiểm tra trạng thái dịch vụ để xác nhận SSH đã hoạt động:
sudo systemctl status ssh --no-pager -l
Nếu kết quả hiển thị trạng tháiActive: active (running), dịch vụ SSH đang hoạt động.

Bạn cũng có thể kiểm tra nhật ký khởi động để xác nhận máy chủ đang lắng nghe kết nối trên cổng SSH:
sudo journalctl -u ssh -n 30 --no-pager
Lưu ý: Hãy giữ nguyên phiên SSH hiện tại cho đến khi xác nhận có thể kết nối bằng một phiên mới. Trạng tháidisabledtrong thông tin dịch vụ chỉ cho biết SSH chưa được bật tự khởi động theo cơ chế enable thông thường; điều này không đồng nghĩa dịch vụ đang ngừng chạy.
6. Bước 5: Kiểm tra kết nối SFTP từ máy khách
Bây giờ máy chủ SFTP đã sẵn sàng. Bạn có thể kiểm tra kết nối từ một máy tính khác thông qua dòng lệnh terminal hoặc phần mềm đồ họa chuyên dụng.
- Protocol: SFTP – SSH File Transfer Protocol
- Host: Địa chỉ IP máy chủ Ubuntu
- Port: 22 hoặc cổng SSH đang sử dụng
- Username: sftpuser
- Password: Mật khẩu đã thiết lập cho tài khoản SFTP
Cú pháp kết nối qua terminal:
sftp sftpuser@your_server_ip
(Trong đó hãy thay thế sftpuser bằng tên người dùng và your_server_ip bằng địa chỉ IP máy chủ của bạn).
Khi kết nối thành công, người dùng sẽ bị giới hạn trong môi trường Chroot và chỉ có thể quản lý dữ liệu trong thư mục được cấp quyền. Đảm bảo tài khoản thuộc nhómsftpusersvà thư mục lưu trữ có quyền sở hữu phù hợp trước khi sử dụng.
Nếu bạn sử dụng máy tính Windows và thích giao diện kéo thả trực quan hơn, hãy tham khảo bài viết hướng dẫn sử dụng công cụ WinSCP để dễ dàng chuyển tệp tin từ máy cá nhân lên máy chủ. Bạn cũng có thể xem thêm các thao tác cơ bản trong cách chép file giữa máy tính và VPS để thao tác nhanh gọn hơn.
7. Các lưu ý bảo mật quan trọng khi vận hành SFTP
Để duy trì máy chủ SFTP an toàn trong suốt thời gian hoạt động, hãy tuân thủ 3 nguyên tắc bảo mật trọng yếu sau:
- Cấu hình tường lửa (Firewall Settings): Đảm bảo hệ thống tường lửa cho phép lưu lượng truy cập qua cổng SFTP (mặc định là cổng 22 của SSH). Bạn có thể thiết lập bảo vệ bằng cách đọc hướng dẫn cài đặt tường lửa UFW trên Ubuntu để mở cổng một cách an toàn.
- Cập nhật phần mềm thường xuyên (Regular Updates): Định kỳ cập nhật các gói phần mềm trên máy chủ để nhanh chóng khắc phục các lỗ hổng an ninh mới phát hiện.
- Sử dụng SSH Key (Use SSH Keys): Nhằm tăng cường mức độ bảo mật cao nhất, hãy cấu hình xác thực bằng khóa SSH Key thay vì mật khẩu thông thường. Điều này giúp ngăn chặn các đợt tấn công vét cạn mật khẩu (brute-force). Ngoài ra, hãy áp dụng đầy đủ các kinh nghiệm trong các biện pháp bảo mật máy chủ VPS để bảo vệ dữ liệu tối đa.
CHECKLIST NHANH TRƯỚC KHI ĐƯA VÀO SỬ DỤNG
- ✅ Hệ thống đã chạy lệnh sudo apt update && sudo apt upgrade -y
- ✅ OpenSSH server đã được cài đặt
- ✅ Dòng Subsystem sftp có trong file sshd_config
- ✅ Nhóm sftpusers và user SFTP riêng đã được tạo (không dùng root)
- ✅ Thư mục home đã được phân quyền root:root, thư mục file thuộc user SFTP
- ✅ Khối Match Group đã được thêm và dịch vụ SSH đã khởi động lại
- ✅ Đã test kết nối sftp sftpuser@your_server_ip thành công
- ✅ Tường lửa cho phép kết nối trên port 22
Câu hỏi thường gặp về cấu hình SFTP server trên Ubuntu
SFTP server trên Ubuntu chạy trên port nào?
SFTP hoạt động thông qua SSH server, vì vậy mặc định nó chạy trên port 22. Khi cấu hình tường lửa, bạn cần đảm bảo port này được mở để các client kết nối được. Nếu bạn thay đổi port SSH theo nhu cầu riêng, cần đồng bộ lại ở cả cấu hình tường lửa lẫn phía client.
Có nên dùng tài khoản root để truyền file qua SFTP không?
Không nên. Tài liệu hướng dẫn khuyến nghị không sử dụng người dùng root, đặc biệt khi bạn muốn cấp thông tin truy cập cho một người khác. Thay vào đó, hãy tạo một nhóm sftpusers và một user riêng với shell /usr/sbin/nologin, nhờ đó người dùng chỉ có quyền thao tác file trong thư mục được cấp mà không thể đăng nhập vào hệ thống.
ChrootDirectory trong khối Match Group có tác dụng gì?
ChrootDirectory %h giới hạn người dùng SFTP chỉ làm việc trong thư mục home của chính họ, ngăn họ truy cập toàn bộ hệ thống file của server. Kết hợp với ForceCommand internal-sftp, AllowTcpForwarding no và X11Forwarding no, người dùng chỉ có thể truyền file mà không thể thực thi lệnh hệ thống hay chuyển tiếp kết nối, giúp tăng độ an toàn cho server.
Trên đây là toàn bộ Hướng Dẫn Cấu Hình SFTP Server Trên Ubuntu 22.04, đi qua 5 bước chính: cập nhật hệ thống, cài đặt OpenSSH server, cấu hình SSH cho SFTP với nhóm người dùng riêng và thư mục giới hạn, khởi động lại dịch vụ rồi kiểm tra kết nối. Ba điều cần ghi nhớ: luôn dùng user SFTP riêng thay vì root, đảm bảo tường lửa cho phép port 22, và ưu tiên SSH key cho xác thực. Nếu bạn cần một môi trường server riêng để vận hành SFTP, một VPS Linux sẽ là nền tảng phù hợp để triển khai ngay hôm nay.
Cần một VPS giá rẻ để bắt đầu?
Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng quản trị riêng.
Nội dung bài viết chỉ mang tính tham khảo. Các lệnh, đường dẫn file cấu hình và tham số có thể thay đổi tùy theo phiên bản Ubuntu, phiên bản OpenSSH và môi trường thực tế của bạn. Trước khi áp dụng lên hệ thống đang vận hành, người đọc nên kiểm thử trong điều kiện an toàn, sao lưu dữ liệu và tự đánh giá rủi ro cho môi trường production.



