温馨提示×

linux sftp支持密钥吗

小樊
44
2026-09-10 22:52:33
栏目: 智能运维

是的,Linux 上的 SFTP 是支持密钥认证的。

SFTP 本身是基于 SSH 协议的文件传输方式,而 SSH 天然支持公钥/私钥(密钥)认证,所以 SFTP 也完全可以只用密钥登录,而不使用密码。


一、SFTP 使用密钥的基本原理

  1. 在客户端生成一对密钥:

    • 私钥(留在本地,不能泄露)
    • 公钥(放到服务器的 ~/.ssh/authorized_keys 中)
  2. 客户端通过 SFTP 连接服务器时:

    • SSH 使用私钥进行身份验证
    • 验证通过后即可使用 SFTP

二、常见使用方式

1️⃣ 命令行 SFTP(最常用)

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

如果私钥是默认的 ~/.ssh/id_rsa,也可以直接:

sftp user@host

2️⃣ 配置 ~/.ssh/config(推荐)

Host mysftp
    HostName 192.168.1.10
    User sftpuser
    IdentityFile ~/.ssh/id_rsa

然后使用:

sftp mysftp

3️⃣ 仅 SFTP、禁止 SSH Shell(常见安全做法)

在服务器 /etc/ssh/sshd_config 中:

Match User sftpuser
    PasswordAuthentication no
    PubkeyAuthentication yes
    ForceCommand internal-sftp
    ChrootDirectory /sftp

然后重启 SSH:

systemctl restart sshd

三、支持的密钥类型

Linux SFTP / SSH 通常支持:

  • RSA(常用)
  • ED25519(推荐,更安全)
  • ECDSA

生成 ED25519 示例:

ssh-keygen -t ed25519

四、客户端工具也支持

以下工具都支持 SFTP + 密钥:

  • OpenSSH(命令行)
  • FileZilla
  • WinSCP
  • rsync over SSH
  • lftp

五、总结

Linux SFTP 完全支持密钥认证
✅ 比密码更安全、更适合自动化
✅ 可以禁用密码,仅允许密钥

如果你需要,我也可以给你:

  • 完整的 SFTP 密钥登录配置教程
  • 只给 SFTP 权限、不能登录 Shell 的方案
  • 自动化脚本示例

直接告诉我你的使用场景即可。

0