SSH 服务器无法识别 authorized_keys

SSH 服务器无法识别 authorized_keys

我一直在尝试通过 SSH 设置 Git,并严格遵循我所看到的指南。我使用 ssh-keygen 创建密钥集,登录远程主机并使用 将公钥附加到 .ssh/authorized_users cat id_rsa.pub >> .ssh/authorized_keys。当我尝试登录时,系统仍提示我输入用户(git 用户)的密码。

我还找到了一个教程,其中展示了如何使用 putty 的 keygen 工具,然后按照它操作。同样,什么都没有。我找到的任何教程似乎都没有在远程主机上获得 sshd,以允许我使用生成的密钥登录。

有什么方法可以手动控制吗?我目前只能使用 Red Hat Enterprise Linux 4。

答案1

如果您有权访问 SSHd 配置,则可以检查是否PubkeyAuthentication设置yes为允许公钥身份验证。如果PubkeyAuthentication设置为,no您将无法使用公钥登录,服务器将提示您输入密码。

答案2

确保权限正确:

$ chown <user> -R ~<user>/.ssh
$ chmod 700 ~<user>/.ssh
$ chmod 600 ~<user>/.ssh/authorized_keys

另外还要确保 sshd_config 具有:

PubkeyAuthentication yes

答案3

如果用户的主目录具有组写权限,则 SSH 将不允许公钥认证,因为否则该组的任何其他成员都可以执行以下操作并获得对用户帐户的访问权限:

mv .ssh ..ssh
mkdir .ssh
cp ..ssh/* .ssh
echo "myfakekey" >> .ssh/authorized_keys

我经常看到组写入主目录。当用户拒绝听从我的警告时,我甚至创建了一个 cron 任务来每小时一次“chmod gw”每个主目录。

答案4

要在 Windows 上正确设置权限,请使用 icacls.exe:

icacls.exe “C:\Users\USERNAME.ssh\authorized_keys”/inheritance:r /grant “管理员:F”/grant “SYSTEM:F”

相关内容