在 Ubuntu 上通过 SFTP 使用密钥登录,一般步骤如下(假设你已经有或准备生成 SSH 密钥):
在本地电脑(客户端)执行:
ssh-keygen -t rsa -b 4096
一路回车即可,默认会生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub(也可以指定文件名,如 sftp_key)
在本地执行:
ssh-copy-id user@server_ip
示例:
ssh-copy-id ubuntu@192.168.1.100
输入一次服务器密码后,公钥会自动写入:
~/.ssh/authorized_keys
✅ 如果不能用 ssh-copy-id,可手动复制:
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@server_ip
如果私钥有密码,会提示输入 密钥密码(不是服务器密码)。
sftp -P 2222 -i ~/.ssh/id_rsa user@server_ip
在 Ubuntu 服务器 修改:
sudo nano /etc/ssh/sshd_config
确保或修改为:
PubkeyAuthentication yes
PasswordAuthentication no
重启 SSH:
sudo systemctl restart ssh
⚠️ 修改前请确保密钥已能正常登录,否则可能锁死自己。
服务器上权限必须正确:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
检查:
如果你是用 FileZilla / WinSCP / VS Code 等工具登录,我也可以给你对应配置方法。