在 CentOS 上使用密钥登录 SFTP(本质就是 SSH 密钥登录),一般步骤如下:
在你自己的电脑(客户端)上执行:
ssh-keygen -t rsa -b 4096
一路回车即可,会生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub在客户端执行:
ssh-copy-id user@服务器IP
输入一次密码后,以后就可以密钥登录了。
如果是 Windows(如 PuTTY / WinSCP),需要把 id_rsa.pub 内容粘贴到服务器的:
~/.ssh/authorized_keys
并确认权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
编辑配置文件:
sudo vi /etc/ssh/sshd_config
确保以下内容:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(可选)禁用密码登录(更安全):
PasswordAuthentication no
修改后重启 SSH:
sudo systemctl restart sshd
sftp -i ~/.ssh/id_rsa user@服务器IP
id_rsa 私钥权限问题
.ssh 权限必须是 700SELinux
restorecon -Rv ~/.ssh
防火墙
firewall-cmd --list-all
SFTP 走的是 22 端口(SSH)
如果你是想限制 SFTP 只能传文件、不能登录 shell,或者给某个用户单独配置 SFTP 目录,也可以告诉我,我可以给你专门配置示例。