Ubuntu SFTP 免密登录

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> 提示符,成功。