为什么用于验证 SSH 的 SSH 公钥似乎在一段时间后就会过期?

为什么用于验证 SSH 的 SSH 公钥似乎在一段时间后就会过期?

我想从客户端通过 SSH 连接到服务器而不使用密码,因此我将客户端的公钥附加到服务器的公钥authorized_keys。虽然以前我需要密码,但执行上述操作后,我不再需要密码。因此我得出结论,我知道如何做到这一点,而且它有效。

但过了一段时间,它又失败了。然后我必须在客户端上生成新的公钥/私钥对,将公钥附加到服务器上,然后它又只能工作一段时间。

为什么会这样??

我重启了服务器的 SSH 守护进程,但没用。再次附加旧密钥不起作用。我必须生成一个新密钥并将其附加。

我在客户端上尝试了另一个帐户 - root。问题依旧。

答案1

就像你说的,公钥或私钥不会过期。所以这个问题可能与此无关。

但是,由于这就是您所说的有关该问题的全部内容:

但过了一段时间它就失败了。

我们真的不知道它是如何失败的,以及失败的原因。您可以启用调试输出来查看有关此问题的更多信息。

不过我可以猜一下。一个常见的原因是你尝试连接的服务器更改了其服务器由于其他原因(例如重新安装操作系统)或 IP 发生更改,您的客户端无法获取密钥。通常,您的客户端会通过其公钥识别它尝试连接的任何服务器,并将公钥与该信息映射到的 IP 一起存储(在 known_hosts 文件中)。一段时间后,这些事情往往会发生变化,通常是通过切换到不同的服务器或托管提供商来更改 IP,因此此时您需要采取一些措施。这并不是说您需要重新生成密钥,而是刷新服务器信息并保持密钥原样。

以上所有内容都假设您确实在使用公钥身份验证(如您所说)。此外,客户端证书身份验证也是可能的,在这种情况下,这些证书当然会过期。

答案2

我们确实需要更多信息来了解连接为何会定期失败。

对于未来的用户,您可以使用选项-v(例如,ssh -v YOUR_USER@YOUR_SERVER最多 3 个 v)启用调试信息的输出,每个 vv都会增加调试信息的详细程度。从那里,您可以查看客户端是否成功连接到服务器、公钥交换、用于加密连接的所选密码、服务器的公钥是否受信任以及 SSH 身份验证是否成功。来自man ssh

 -v      Verbose mode.  Causes ssh to print debugging messages about its
         progress.  This is helpful in debugging connection, authentication,
         and configuration problems.  Multiple -v options increase the
         verbosity.  The maximum is 3.

相关内容