SFTP用戶認證主要有密碼認證和密鑰認證兩種方式,以下是具體設置步驟:
sudo yum install openssh-server
sudo apt update && sudo apt install openssh-server
sudo groupadd sftpusers # 創建用戶組
sudo useradd -g sftpusers -s /sbin/nologin sftpuser # 創建用戶并禁止SSH登錄
sudo passwd sftpuser # 設置密碼
/etc/ssh/sshd_config
,添加以下內容:Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h # 限制用戶只能訪問主目錄
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
確保PasswordAuthentication yes
(默認開啟)。sudo mkdir /home/sftpuser/uploads # 創建可寫目錄
sudo chown root:root /home/sftpuser # 主目錄屬主為root
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpusers /home/sftpuser/uploads # 可寫目錄屬主為用戶
sudo systemctl restart sshd
ssh-keygen -t rsa -b 4096
(默認保存到~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
)ssh-copy-id sftpuser@server_ip
(或手動復制公鑰到服務器~/.ssh/authorized_keys
)/etc/ssh/sshd_config
中添加:PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 可選:禁用密碼認證
sudo systemctl restart sshd
使用SFTP客戶端(如FileZilla或命令行)連接:
ssh sftpuser@server_ip
(密碼認證需輸入密碼,密鑰認證需指定私鑰路徑)
安全提示:
ChrootDirectory
的權限為755
且屬主為root
,防止用戶越權訪問。