在 Ubuntu 上使用 SFTP + 密钥登录(而不是密码)一般分为以下几步:
在本地 Ubuntu 机器上执行:
ssh-keygen -t rsa -b 4096
一路回车即可,默认会生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub(也可以指定名字,如 sftp_key)
ssh-copy-id user@sftp.server.com
输入一次密码后,公钥会自动写入服务器的:
~/.ssh/authorized_keys
在本地查看公钥:
cat ~/.ssh/id_rsa.pub
登录服务器后,执行:
mkdir -p ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
sftp -i ~/.ssh/id_rsa user@sftp.server.com
如果密钥有密码(passphrase),会提示输入。
sftp -P 2222 -i ~/.ssh/id_rsa user@sftp.server.com
在 SFTP 服务器 上修改:
sudo nano /etc/ssh/sshd_config
确保有以下配置:
PubkeyAuthentication yes
PasswordAuthentication no
重启 SSH:
sudo systemctl restart ssh
⚠️ 确认密钥能登录后再关闭密码!
SFTP密钥文件user~/.ssh/id_rsaPermissions 0644 for 'id_rsa' are too open
解决:
chmod 600 ~/.ssh/id_rsa
authorized_keys 权限sudo tail -f /var/log/auth.log
如果你愿意,可以告诉我:
我可以给你更针对性的配置示例。