温馨提示×

centos sftp能用密钥登录吗

小樊
38
2026-09-18 03:25:20
栏目: 智能运维

可以的,CentOS 上的 SFTP 完全支持使用密钥(SSH 密钥)登录,实际上 SFTP 就是基于 SSH 的,只要 SSH 支持密钥登录,SFTP 就能用。

下面给你一个常见、可用的配置思路(以 CentOS 7/8/Stream 为例):


一、服务端(CentOS)准备

1. 确认 SSH 服务已安装并运行

systemctl status sshd

如果没开:

systemctl start sshd
systemctl enable sshd

2. 创建 SFTP 用户(示例)

useradd sftpuser
passwd sftpuser   # 可设置,也可不设置(仅密钥登录时可锁密码)

3. 配置用户密钥目录

mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh

4. 放入客户端公钥

把客户端生成的 id_rsa.pub 内容写入:

vi /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

二、SSH 服务端配置(关键)

编辑:

vi /etc/ssh/sshd_config

确保有以下内容(一般默认就有):

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

如果只允许密钥登录(可选,更安全):

PasswordAuthentication no

修改后重启 SSH:

systemctl restart sshd

三、限制为“仅 SFTP,不能 SSH 登录”(常见需求)

在 sshd_config 末尾加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

⚠ 注意:

  • ChrootDirectory 目录必须 root 拥有且 755
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
  • 用户实际可写目录要单独建:
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

四、客户端使用密钥连接 SFTP

Linux / macOS:

sftp -i ~/.ssh/id_rsa sftpuser@服务器IP

Windows(WinSCP / FileZilla):

  • 认证方式选 密钥文件
  • 选择 id_rsa 或 ppk(WinSCP 可用 PuTTY 密钥)

五、常见问题排查

  • 权限问题(最常见)
    • .ssh 必须是 700
    • authorized_keys 必须是 600
  • SELinux
    restorecon -Rv /home/sftpuser/.ssh
    
  • 防火墙
    firewall-cmd --add-service=ssh --permanent
    firewall-cmd --reload
    

✅ 结论:
CentOS 的 SFTP 不仅可以,而且推荐用密钥登录,比密码安全得多,也更适合自动化。

如果你需要,我可以给你一份完整的“仅 SFTP + 密钥 + Chroot”可直接抄的配置示例。

0 踩