使用 ssh 密钥的 ssh 登录仅在站点登录后有效一次

使用 ssh 密钥的 ssh 登录仅在站点登录后有效一次

我在使用 ssh 时遇到了一个有趣的问题。以下是设置。

我的客户端(运行 Ubuntu 17.04)有公钥和私钥。我使用命令将公钥复制到服务器(运行 Ubuntu Server 16.04.3 LTS)ssh-copy-id。我通过查看服务器上的 authorized_keys 文件验证了这一点;我的客户端的公钥是唯一列出的。

现在来看看问题。我可以使用我的私人 ssh 密钥从客户端通过 ssh 登录到服务器。但在我注销并再次尝试 ssh 后,我收到以下错误:

Permission denied (publickey).

当我在控制台上登录服务器时,我使用密码登录,一切正常。然后,当我再次尝试从客户端使用 SSH 时,它又可以正常工作了。我可以根据需要多次注销和登录。一旦我从服务器上的控制台注销(就像我之前在服务器上登录一样),我就可以从客户端再使用 SSH 一次。然后,一旦该会话结束,我Permission denied (publickey).在所有后续 SSH 尝试中都会再次收到错误。有什么想法吗?

以下是我的客户端上的 ssh 配置文件:

Host sauron
        HostName 192.168.1.191
        User joe
        PubKeyAuthentication yes
        IdentityFile id_rsa

还有一件事要提一下,我确实对服务器上的整个 SSD 进行了加密。每当我使用加密密码启动服务器时,我都必须将其解锁。不确定这是否相关。我怀疑这可能是权限问题,尽管我也不确定。非常感谢您提出建议,如果您需要澄清任何事情,请询问。

答案1

感谢@muru 关于加密主目录的评论,我被引导到这个文章关于如何处理这个问题。

该文章的 TLDR; 如下,并解决了我的问题:

  1. /etc/ssh/创建一个与您使用的登录用户同名的目录。在我的例子中: /etc/ssh/joe

  2. 将文件复制authorized_keys到此目录。

  3. 为用户设置该文件和目录的正确权限。

  4. 将以下行添加到 sshd_config 文件:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

  1. 重新启动 SSH。

全部修复!

相关内容