下面以 Debian 为例,说明 SFTP 使用密钥登录 的完整配置步骤(服务端 + 客户端)。
sudo apt update
sudo apt install openssh-server
sudo adduser sftpuser
⚠️ 如果只做 SFTP,可不设密码或设复杂密码。
编辑配置文件:
sudo nano /etc/ssh/sshd_config
关键配置:
PubkeyAuthentication yes
PasswordAuthentication no
如果是 专用 SFTP 用户,可加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
AllowTcpForwarding no
保存后重启:
sudo systemctl restart ssh
在 你的电脑(客户端) 执行:
ssh-keygen -t rsa -b 4096
默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub⚠️ 不要泄露私钥
# 在客户端
scp ~/.ssh/id_rsa.pub user@server:/tmp/
# 在服务器
mkdir -p /home/sftpuser/.ssh
cat /tmp/id_rsa.pub >> /home/sftpuser/.ssh/authorized_keys
chmod 700 /home/sftpuser/.ssh
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
ssh-copy-id sftpuser@server_ip
如果用了 ChrootDirectory:
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
再建可写目录:
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sftp -i ~/.ssh/id_rsa sftpuser@server_ip
或默认密钥:
sftp sftpuser@server_ip
.ssh 权限不对Chroot 目录ownerChrootDirectory 权限不是 root:root如果你告诉我:
我可以给你更精确的配置。