如何让 SSH 提示我使用 RSA 密钥而不是 ECDSA 密钥?

信息安全 SSH
2021-08-31 01:11:52

我正在尝试通过 SSH 连接到我新的 Ubuntu 12.04 服务器。在客户端,我删除了 known_hosts。第一次通过 SSH 连接到主机,它为我提供了一个 ECDSA 密钥来验证。问题是我知道如何获取 RSA 密钥并对其进行验证,但我不知道如何获取 ECDSA 密钥。

如果我同意,如何强制 SSH 提示 RSA 密钥并存储它?

我努力了:

ssh -o RSAAuthentication=yes user@server

不幸的是,这给了我一个 ECDSA 密钥和Are you sure you want to continue connecting (yes/no)?消息。

3个回答

您还可以告诉服务器从客户端使用什么算法(例如,如果您已经写下 rsa 指纹并且物理上远离服务器)

  ssh -oHostKeyAlgorithms='ssh-rsa' host

不要使用 RSA,因为 ECDSA 是新的默认值。更新的东西有时会更好。为了大多数人的方便,默认的东西通常更好。对于大多数人来说,默认的新事物很可能更好。

在服务器上这样做:

ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

并记录该号码。

在客户端上,您可以通过 SSH 连接到主机,并且当您看到相同的号码时,您可以回答提示

Are you sure you want to continue connecting (yes/no)?

肯定的。然后 ECDSA 密钥将记录在客户端known_hosts文件中的默认位置,以便将来使用 ssh 时不需要您确认远程主机的身份。

附录:

如果您将停止使用该远程主机,可能是因为它是您已删除的云服务器,请known_hosts通过以下方式从文件中删除记录:

ssh-keygen -R 255.255.255.255

或类似的东西。

是的,好的,很快就切换到 ECDSA,但同时试试这个:

ssh -oHostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com