Ubuntu SFTP 免密登录本质就是SSH 公钥认证,SFTP 直接复用 SSH 协议与端口,所以配置和 SSH 免密完全一样。下面给你一套最简、可直接复制的步骤。
一、客户端生成密钥对(本地执行)
一、推荐 Ed25519(更安全、更短),不支持再用 RSA:
bash
运行
# Ed25519(推荐)
ssh-keygen -t ed25519
二、把公钥传到 Ubuntu 服务器(客户端执行)
bash
运行
# 自动分发公钥(最方便)
ssh-copy-id username@server_ip
三、服务器端配置 SSH(Ubuntu 上执行)
1. 确保 .ssh 权限正确
bash
运行
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
权限错了会直接拒绝免密,这是最常见坑。
2. 开启公钥认证
bash
运行
sudo nano /etc/ssh/sshd_config
确保下面两行(取消注释,值为 yes):
ini
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
可选(安全加固):
ini
PasswordAuthentication no
KbdInteractiveAuthentication no
保存退出(nano:Ctrl+O → 回车 → Ctrl+X)。
3. 重启 SSH 生效
bash
运行
sudo systemctl restart ssh
# 或
sudo systemctl restart sshd
四、测试 SFTP 免密
客户端直接连:
bash
运行
sftp username@server_ip
不需要输密码,直接进入 sftp> 提示符,成功。