我正在尝试使用 SSH 连接到我自己的 CentOS 服务器;我可以通过密码正常连接;我正在尝试使用我的公钥进行连接,但服务器并未尝试进行公钥身份验证。我已按照CentOS wiki 中此页面上的所有说明进行操作,并验证了以下内容:
我正在运行 CentOS 6.0 或更高版本
我的 sshd_config 具有以下内容:
PermitRootLogin no PubkeyAuthentication Yes RSAAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
我在客户端主目录的 .ssh/ 文件夹中创建了私钥
- 公钥的全文(由 生成
ssh-keygen
)在服务器上我的主目录中的 .ssh/authorized_keys 文件中占据一行。 我在客户端和服务器上都设置了以下权限模式:
chmod 700 .ssh chmod 600 .ssh/*
根据CentOS 网站上的这个问题报告,这是由 SELinux 中的一个上游“特性”引起的;如果 SELinux 强制执行,它将阻止服务器使用 pubkey 身份验证。没有迹象表明这种行为会在不久的将来改变。要查看此问题是否适用于您,请键入
sestatus
并查看它是否将“当前模式”报告为enforcing
。我知道有两种解决方法。
setenforce 0
立即更改策略,然后打开/etc/selinux/config
并确定SELINUX=permissive
。将文件恢复到正确的安全上下文: