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

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

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

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

我努力了:

ssh -o RSAAuthentication=yes user@server

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

答案1

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

ssh -o [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss user@server

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

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

Host: server
    HostKeyAlgorithms [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss

答案2

是的,好的,很快切换到 ECDSA,但同时尝试这样做:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 [email protected]

答案3

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

答案4

只是为了改进 tumbleweed 的答案,其中有一个用于查找旧算法列表的死链接。

首先确定一个算法列表。要查找旧列表,请使用ssh -vv

ssh -vv somehost

然后查找类似“主机密钥算法:...”的两行,其中第一行似乎是服务器的提议,第二行是客户端的提议。或者要自动挑选出这两行,请尝试以下操作(退出时按 ctrl+d):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

现在将其过滤掉...您应该删除所有 dss/dsa,因为它们早已过时,并且您还想删除 ecdsa(我也是),例如如果您有:

[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

你应该得到以下结果:

[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

现在编辑你的配置。对于你自己的配置:

vim ~/.ssh/config

对于系统范围的配置:

sudo vim /etc/ssh/ssh_config

添加新行,可以是全局的:

HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

或针对特定主机(不适合服务器范围的配置):

Host somehost
    HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

不要粘贴我输入的列表,而是粘贴您从输出中得出的列表ssh -vv,不包括“主机密钥算法:”部分。

相关内容