下面给你一套从零开始在 Ubuntu 上用密钥登录 SFTP 的完整步骤,适用于 OpenSSH Server(最常用)。
ssh-keygen -t ed25519 -C "your_email@example.com"
如果系统较老,可用:
ssh-keygen -r rsa -b 4096
按提示回车即可,默认生成:
~/.ssh/id_ed25519~/.ssh/id_ed25519.pubssh-keygen -t ed25519
ssh-copy-id user@server_ip
输入密码后,公钥会自动写入:
~/.ssh/authorized_keys
scp ~/.ssh/id_ed25519.pub user@server_ip:~/
登录服务器后:
mkdir -p ~/.ssh
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh user@server_ip
✅ 如果不再输入密码就成功。
sftp user@server_ip
SFTPKey fileuserid_ed25519SFTP.ppk(可用 PuTTYgen 转换)编辑服务器 SSH 配置:
sudo nano /etc/ssh/sshd_config
修改或确认:
PubkeyAuthentication yes
PasswordAuthentication no
重启 SSH:
sudo systemctl restart ssh
⚠️ 确认密钥能登录后再关闭密码登录
服务器上必须保证:
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
这是正常的,SFTP 默认限制在该用户目录。
可配置:
Subsystem sftp internal-sftp
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。