如何强制 SSH 提供 RSA 密钥而不是 ECDSA?

H2O*_*aCl 19 ssh

第一次访问服务器时,如何强制 SSH 给我 RSA 密钥并在用户批准时自动存储它?

目前它向我提供 ECDSA 密钥。因为我已经知道 RSA 密钥,所以我更愿意看到此时显示的 RSA 密钥。

我试过了:

ssh -o RSAAuthentication=yes user@server
Run Code Online (Sandbox Code Playgroud)

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

tum*_*eed 17

通过从HostKeyAlgorithms配置变量中删除 ECDSA 算法。

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server
Run Code Online (Sandbox Code Playgroud)

我只是从默认列表中删除了所有 ECDSA 算法。

当然,你可以把它放在你.ssh/config的那台机器上:

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss
Run Code Online (Sandbox Code Playgroud)


小智 7

是的,可以尽快切换到 ECDSA,但同时尝试以下操作:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com
Run Code Online (Sandbox Code Playgroud)

  • @SorenBjornstad,`FingerprintHash` 选项是不必要的,只需将整个部分关闭即可。 (2认同)

H2O*_*aCl 6

不要使用 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 密钥将被记录在客户端以备将来使用。

  • 是的,但是如果我有一个旧的应用程序需要 RSA 来保持兼容性,直到有一个更新到 ecdsa 的商业决定呢? (3认同)