温馨提示×

centos sftp密钥登录怎样设

小樊
47
2026-10-17 14:58:34
栏目: 智能运维

下面以 CentOS 7/8/Stream 为例,一步一步说明 SFTP 使用密钥登录 的配置方法(基于 OpenSSH)。


一、生成 SFTP 密钥(在客户端)

在 你自己的电脑(客户端) 上执行:

ssh-keygen -t rsa -b 4096

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

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

⚠️ 私钥不要给别人


二、上传公钥到 CentOS 服务器

方法 1:使用 ssh-copy-id(推荐)

ssh-copy-id user@服务器IP

输入一次密码后,公钥会自动写入服务器:

/home/user/.ssh/authorized_keys

方法 2:手动复制

在客户端查看公钥:

cat ~/.ssh/id_rsa.pub

在服务器上:

mkdir -p /home/user/.ssh
vi /home/user/.ssh/authorized_keys

粘贴公钥内容,然后:

chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys
chown -R user:user /home/user/.ssh

三、配置 SSH 只允许密钥登录(可选但推荐)

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

确认或修改以下配置:

PubkeyAuthentication yes
PasswordAuthentication no

重启 SSH:

systemctl restart sshd

⚠️ 操作前确保密钥能登录,否则会无法连接


四、限制用户只能 SFTP(不能 SSH)

如果用户 只能 SFTP,不能登录系统:

1️⃣ 创建用户

useradd sftpuser

2️⃣ 修改 sshd_config

vi /etc/ssh/sshd_config

添加:

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

3️⃣ 设置目录权限(重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

重启 SSH:

systemctl restart sshd

五、客户端使用 SFTP 密钥登录

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

或使用 FileZilla:

  • 协议:SFTP
  • 登录类型:密钥文件
  • 选择 id_rsa

六、常见问题排查

❌ 权限错误

Permissions 0777 for '.ssh' are too open

解决:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

❌ 无法登录

查看服务器日志:

tail -f /var/log/secure

如果你需要 多用户 SFTP + 不同目录权限 或 Docker / SFTP 服务配置,也可以继续问我。

0 踩