在 Ubuntu 上配置 SFTP 使用密钥登录(而不是密码),一般步骤如下:
在**你自己的电脑(客户端)**执行:
ssh-keygen -t rsa -b 4096
一路回车即可,默认会生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub在客户端执行:
ssh-copy-id user@server_ip
替换
user和server_ip为你的服务器用户名和 IP
如果 ssh-copy-id 不可用,也可以手动复制:
cat ~/.ssh/id_rsa.pub
然后登录服务器,粘贴到:
~/.ssh/authorized_keys
并修复权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
确保以下配置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 禁止密码登录(可选但推荐)
如果是 仅 SFTP 用户(不能 SSH 登录),可加:
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
PasswordAuthentication no
AllowTcpForwarding no
创建 SFTP 用户示例:
sudo adduser sftpuser
sudo usermod -aG sftpusers sftpuser
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo systemctl restart ssh
客户端执行:
sftp user@server_ip
如果不再提示输入密码,说明配置成功 ✅
.ssh 必须是 700authorized_keys 必须是 600sudo chown root:root /home/sftpuser
如果你需要 限定目录、多用户、或者 Windows 客户端配置,可以告诉我具体场景。