在 CentOS 上使用 SFTP 密钥登录,本质是:用 SSH 密钥代替密码进行认证。下面按步骤说明,适用于 CentOS 7 / 8 / Stream。
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub⚠️ 私钥不要给别人
ssh-copy-id user@服务器IP
输入一次密码后,以后即可密钥登录。
在服务器上:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
把客户端 id_rsa.pub 内容追加到:
~/.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_rsaid_rsa 或 ppk(可用 PuTTY 转换)服务器上必须保证:
chmod 700 /home/user
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys
restorecon -Rv ~/.ssh
ssh -i id_rsa user@IP -v
看调试信息,通常是权限或配置问题。
如果你只想让用户 只能用 SFTP,不能登录 Shell:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。