当前位置: 首页>>技术问答>>正文


在将SSH公钥复制到authorized_keys后,服务器一直要求输入密码

,

问题描述

我有一个在云中运行的Ubuntu服务器。我创建了一个用户(git)。在文件夹/home/git中,我创建了.ssh/目录和authorized_keys文件。

但是,当我将SSH公钥放入authorized_keys文件时,服务器继续向我询问密码。

我做错了什么?

最佳解决办法

在服务器端,ssh守护程序将在/var/log/auth.log中记录错误,因此请检查该文件以查看报告的内容。

从客户端,在建立连接时,您可以添加-v标志(或-vv-vvv)以增加详细程度。您可以通过这种方式识别问题。

这里有其他要检查的事情。

  • 确保/home/git/.ssh/authorized_keysgit所有。

  • 确保/home/git/.ssh/authorized_keys的模式为600(-rw-------)。

另请检查/etc/ssh/sshd_config文件。

  • PubkeyAuthentication应设置为yes

  • 还有AuthorizedKeysFile指令,用于确定授权密钥的位置。确保它已注释掉或默认为%h/.ssh/authorized_keys

次佳解决办法

还要确保您的用户主目录(在您的情况下,/home /git)只能由您写入。我曾经遇到过这个问题,因为我的主目录是group-writable。 /var/log/auth.log在其中说:“身份验证被拒绝:目录/home /chuck的所有权或模式不好”。 (这是为了确保它不使用authorized_keys文件,除了你以外的其他人一直在搞乱!)

第三种解决办法

有不同的方法可以解决此问题:您可以配置sshd(server-side)或ssh(client-side)不使用密码验证。在服务器上禁用密码身份验证可以使您的服务器更安全,但如果丢失密钥,则会遇到麻烦。

要使用pubkey身份验证生成ssh(client-side),请在ssh命令中添加一些选项:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

如果这样做,您可以在ssh客户端配置文件/etc/ssh/ssh_config system-wide或~/.ssh/config user-specific中永久设置PasswordAuthentication=no选项(详情请参阅man ssh_config)。

第四种办法

你在本地机器上使用〜/.ssh /config吗?当我在配置文件中使用IdentityFile指令并指向公钥时,我遇到了这个问题。例如:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect

第五种办法

如果您的主文件夹已加密,则登录前您的authorized_keys文件无法读取。你必须把它移到你家外面。

以下是解释和操作方法:https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1819.html,未经允许,请勿转载。