第一次访问服务器时,如果用户批准,如何强制SSH给我提供RSA密钥并自动存储它?
目前,它为我提供了ECDSA密钥。因为我已经知道RSA密钥,所以我更希望看到此时出现的RSA密钥。
我试过了:
ssh -o RSAAuthentication=yes user@server
不幸的是,这给了我ECDSA密钥和Are you sure you want to continue connecting (yes/no)?
消息。
第一次访问服务器时,如果用户批准,如何强制SSH给我提供RSA密钥并自动存储它?
目前,它为我提供了ECDSA密钥。因为我已经知道RSA密钥,所以我更希望看到此时出现的RSA密钥。
我试过了:
ssh -o RSAAuthentication=yes user@server
不幸的是,这给了我ECDSA密钥和Are you sure you want to continue connecting (yes/no)?
消息。
Answers:
通过从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
我只是从默认列表中删除了所有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
HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsa
。
不要使用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密钥将记录在客户端上,以备将来使用。
只是为了改善风滚草的答案,其中有一个死链接,用于查找旧算法列表。
首先确定算法列表。要查找旧列表,请使用ssh -vv
:
ssh -vv somehost
并查找两行,例如“主机密钥算法:...”,其中第一行似乎是服务器的报价,第二行是客户端的报价。或者要自动选择这两行,请尝试以下操作(并退出按ctrl + d键):
ssh -vv somehost 2>&1 | grep "host key algorithms:"
现在将其过滤掉...您应该删除所有dss / dsa,因为它们已经过时了,并且您还想删除ecdsa(我也是如此),例如,如果您有:
ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
您应该最终得到:
ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
现在编辑您的配置。对于您自己的配置:
vim ~/.ssh/config
对于系统范围的配置:
sudo vim /etc/ssh/ssh_config
全局添加新行:
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
或特定的主机(不适合用于服务器范围的配置):
Host somehost
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
代替您输入的列表,粘贴您从ssh -vv
输出派生的列表,而不包括“主机密钥算法:”部分。
某些问题令人困惑,是否有可能从现有默认值中删除密钥算法-最高级别的密钥是新的RSA-sha2 / 256/512和ed25519密钥,使用ssh-keygen -t ras -a -b 4096 -a 113可提供最佳安全性到一代 传统支持显然正在读取ssh1将完全消失的ssh新闻-其45位和96位最大-dsa密钥也已贬值。它固定在最大128/1024位,可被黑客入侵。(可能是NSA这样做了,而调试代码则la脚/借口使人怀疑它的名字令人讨厌),因此必须重新设计所有昂贵的安全RSA密钥结构,以支持并保持更高的标准。设置您希望使用的密钥,如/ etc / ssh / sshd_config中所述,尝试做2个密钥认证3个密钥也起作用,即:sshd_config“ AuthenticationMethods publickey,publickey,publickey” -确保ssh -Q kex列表与A和B服务器或台式机匹配,例如pos对它们的输出进行差异-并确保相同的密钥提取算法匹配。生产中较新的ecdsa钥匙也不适合使用。或get-keyexchange拒绝部分访问安全消息。很多好的信息只是耐心地搜索它。
或者,如果您坚持采用RSA密钥方法,则可以ssh-keygen -t rsa
在要进行SSH 加密的服务器上键入内容。
这应该在“〜/ .ssh / id_rsa”下生成RSA公钥和私钥。现在,您需要做的就是将$HOME/.ssh/authorized_keys
要从中SSH的所有计算机下的公共密钥复制到生成RSA密钥的计算机上。
然后坐下来放松!