下面给你一个在 CentOS 上配置 SFTP 密钥登录的完整流程,适用于 CentOS 7 / 8 / Stream,默认以 OpenSSH 为例。
如果你已经在服务器上操作,也可以直接在服务器生成,再下载私钥
ssh-keygen -t rsa -b 4096
一路回车即可,会生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub⚠️ 私钥一定要保密
ssh-copy-id user@服务器IP
示例:
ssh-copy-id root@192.168.1.10
.ssh 目录并设置权限mkdir -p ~/.ssh
chmod 700 ~/.ssh
authorized_keysecho "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
编辑配置文件:
vi /etc/ssh/sshd_config
确认或添加以下内容:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(可选)禁用密码登录(确认密钥可用后再改):
PasswordAuthentication no
重启 SSH 服务:
systemctl restart sshd
sftp -i ~/.ssh/id_rsa user@服务器IP
id_rsa检查:
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
权限必须是:
.ssh → 700
authorized_keys → 600
restorecon -Rv ~/.ssh
tail -f /var/log/secure
如果你只想让用户 SFTP 登录,不能 SSH:
Match User sftpuser
ForceCommand internal-sftp
ChrootDirectory /data/sftp
PermitTunnel no
AllowAgentForwarding no
X11Forwarding no
ssh-keygen
ssh-copy-id user@ip
systemctl restart sshd
sftp user@ip
如果你愿意,可以告诉我:
我可以按你的场景给你定制配置方案。