温馨提示×

centos sftp密钥登录怎样弄

小樊
40
2026-10-20 12:26:36
栏目: 智能运维

在 CentOS 上配置 SFTP 密钥登录,一般步骤如下(以使用 OpenSSH 为例,适用于 CentOS 7/8/Stream):


一、服务器端准备

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

systemctl status sshd

如未运行:

systemctl start sshd
systemctl enable sshd

二、生成密钥对(在客户端或服务器都可以)

在客户端生成(推荐)

ssh-keygen -t rsa -b 4096

一路回车即可,会生成:

  • ~/.ssh/id_rsa(私钥)
  • ~/.ssh/id_rsa.pub(公钥)

三、将公钥上传到服务器

方法 1:使用 ssh-copy-id(最简单)

ssh-copy-id user@server_ip

方法 2:手动复制

在服务器上:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

把客户端 id_rsa.pub 内容追加到:

~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

四、配置仅 SFTP + 密钥登录(可选但常用)

1. 创建 SFTP 专用用户

useradd sftpuser
passwd sftpuser   # 可设可不设

2. 修改 sshd 配置

编辑:

vi /etc/ssh/sshd_config

添加或修改:

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

3. 设置 Chroot 目录权限(很重要)

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

五、禁用密码登录(可选,增强安全)

在 /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes

重启 sshd:

systemctl restart sshd

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

sftp -i ~/.ssh/id_rsa sftpuser@server_ip

或在 FileZilla / WinSCP 中:

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

七、常见问题排查

1. 登录失败,权限错误

Permission denied (publickey).

检查:

  • authorized_keys 权限
  • .ssh 目录属主
  • sshd_config 是否匹配用户

2. 查看日志

tail -f /var/log/secure

如果你是要 只允许 SFTP 不允许 SSH、多用户隔离、或 使用非root用户Chroot,可以告诉我具体场景,我可以给你更精确的配置。

0 踩