Debian SFTP虛擬用戶管理指南
首先確保系統安裝了openssh-server(提供SFTP服務)和libpam-pwquality(增強密碼安全性,可選但推薦):
sudo apt update
sudo apt install openssh-server libpam-pwquality
虛擬用戶需通過專用數據庫認證,步驟如下:
用戶名:密碼,每行一個用戶):sudo mkdir -p /etc/vsftpd
sudo nano /etc/vsftpd/virtual_users.txt
# 示例內容(替換為實際用戶名和密碼):
user1:password1
user2:password2
db_load工具會自動加密密碼):sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
sudo chmod 600 /etc/vsftpd/virtual_users.db
編輯PAM配置文件,讓系統使用虛擬用戶數據庫進行認證:
sudo nano /etc/pam.d/vsftpd
添加以下兩行(替換virtual_users為你的數據庫文件名,無需.db后綴):
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
編輯SSH配置文件,將虛擬用戶限制在各自的Chroot目錄中:
sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match塊,針對sftpusers組的用戶進行限制:Match Group sftpusers
ChrootDirectory %h # 限制用戶只能訪問其主目錄
ForceCommand internal-sftp # 強制使用SFTP協議
AllowTcpForwarding no # 禁止TCP轉發
X11Forwarding no # 禁止X11轉發
sudo groupadd sftpusers
-m創建家目錄,-s /sbin/nologin禁止shell登錄,-G sftpusers加入用戶組):sudo useradd -m -s /sbin/nologin -G sftpusers user1
sudo useradd -m -s /sbin/nologin -G sftpusers user2
sudo passwd user1
sudo passwd user2
Chroot目錄的所有權必須為root,且用戶無法寫入,避免安全風險:
# 創建用戶家目錄
sudo mkdir -p /home/user1
# 設置所有權(root:root)
sudo chown root:root /home/user1
# 設置權限(755,允許用戶進入但無法修改)
sudo chmod 755 /home/user1
# (可選)創建用戶可寫入的子目錄(如uploads)
sudo mkdir -p /home/user1/uploads
sudo chown user1:sftpusers /home/user1/uploads # 所有權為用戶及其組
sudo chmod 755 /home/user1/uploads # 權限設置
完成所有配置后,重啟SSH服務使更改生效:
sudo systemctl restart sshd
使用SFTP客戶端(如命令行工具或FileZilla)測試虛擬用戶是否能正常登錄:
sftp user1@your_server_ip
輸入虛擬用戶的密碼,若成功登錄并進入/home/user1目錄,則配置正確。
若需使用密鑰認證(替代密碼),步驟如下:
ssh-keygen -t rsa -b 4096
~/.ssh/authorized_keys文件中:sudo mkdir -p /home/user1/.ssh
sudo touch /home/user1/.ssh/authorized_keys
sudo chmod 700 /home/user1/.ssh
sudo chmod 600 /home/user1/.ssh/authorized_keys
sudo nano /home/user1/.ssh/authorized_keys # 粘貼公鑰內容
/etc/ssh/sshd_config):PubkeyAuthentication yes
sudo systemctl restart sshd
root:root且權限為755,否則用戶無法登錄。/var/log/auth.log文件獲取詳細錯誤信息。ufw:sudo ufw allow ssh
sudo ufw enable