温馨提示×

linux sftp能免密登录吗

小樊
45
2026-09-20 07:05:05
栏目: 智能运维

可以的,Linux 的 SFTP 是支持免密登录的,而且这是非常常见、推荐的做法。

原理说明

SFTP 基于 SSH 协议,所以SFTP 免密登录本质就是 SSH 免密登录,通常使用 SSH 公钥认证实现。


实现方式(最常用:公钥认证)

1️⃣ 在客户端生成密钥对

ssh-keygen -t rsa -b 4096

一路回车即可,默认生成:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

2️⃣ 把公钥拷贝到服务器

ssh-copy-id user@server_ip

或手动追加到服务器:

# 在服务器上
echo "客户端公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3️⃣ 使用 SFTP 免密登录

sftp user@server_ip

✅ 不再需要输入密码


其他免密方式(补充)

✅ 方法二:SSH 配置文件 + 指定密钥

# ~/.ssh/config
Host sftp-server
    HostName 192.168.1.100
    User user
    IdentityFile ~/.ssh/id_rsa

然后:

sftp sftp-server

✅ 方法三:脚本 / 程序调用(如 lftp、curl、Python)

sftp -i ~/.ssh/id_rsa user@host

⚠️ 不推荐的“免密”方式

  • ❌ 在服务器上设置空密码(极不安全)
  • ❌ 明文保存密码在脚本中

常见问题排查

如果仍提示输入密码:

  • 服务器 ~/.ssh 权限应为 700
  • authorized_keys 权限应为 600
  • SSH 配置中:
    PubkeyAuthentication yes
    PasswordAuthentication no  # 可选
    

总结

SFTP 可以免密登录
标准做法:SSH 公钥认证
安全、稳定、适合自动化

如果你需要 仅 SFTP 限制用户(不能 SSH)自动化脚本示例,也可以继续问我。

0