可以的,CentOS 完全可以配置 SFTP 公钥登录,而且这是非常常见、推荐的做法(比密码登录更安全)。
下面给你一个清晰、可用的配置流程(以 CentOS 7 / 8 / Stream 为例)。
sshdsftpuser)在你的本地电脑执行:
ssh-keygen -t rsa -b 4096
默认会生成:
~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)useradd sftpuser
passwd sftpuser # 可设可不设(公钥登录可不设密码)
.ssh 目录并配置公钥mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
# 把客户端 id_rsa.pub 内容写进去
vi /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
如果你在客户端,可以直接:
ssh-copy-id sftpuser@服务器IP
如果你希望该用户只能 SFTP,不能 SSH 登录:
vi /etc/ssh/sshd_config
添加或修改:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
AllowTcpForwarding no
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
sftp sftpuser@服务器IP
如果配置正确,不会再提示输入密码。
✅ 权限错误(最常见)
.ssh 必须是 700authorized_keys 必须是 600ChrootDirectory 属主必须是 root✅ SELinux(CentOS 默认开启)
如登录异常:
restorecon -Rv /home/sftpuser/.ssh
如果你愿意,我可以:
你现在是 CentOS 几?是否已有 SFTP 在跑?