我有一个 Linux 服务器,每当我连接它时,它都会向我显示更改 SSH 主机密钥的消息:
$ ssh root@host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @警告:远程主机标识已更改!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ 有人可能正在做一些令人讨厌的事情!现在有人可能正在窃听你(中间人攻击)!也有可能 RSA 主机密钥刚刚被更改。远程主机发送的 RSA 密钥的指纹为 93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b。请联系您的系统管理员。在 /home/emerson/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/home/emerson/.ssh/known_hosts:377 中的违规密钥
host1 的 RSA 主机密钥已更改,您已请求严格检查。主机密钥验证失败。
它让我保持登录状态几秒钟,然后关闭连接。
host1:~/.ssh # 从远程主机 host1 读取:对等端的连接重置 与 host1 的连接关闭。
有谁知道发生了什么以及我可以做些什么来解决这个问题?
以下对 Google 文档的引用不再正确。
Google 建议从 GCE 实例中删除 SSH 密钥以保护 SSH。这对我来说没有任何意义。钥匙是为了安全,对吧?当我删除密钥时,SSHD 停止工作。我可能错过了他们的观点。有人可以解释一下这是什么意思:
删除 ssh 主机密钥
不要在您的实例中使用 ssh 主机密钥。删除它们如下:
Run Code Online (Sandbox Code Playgroud)rm /etc/ssh/ssh_host_key rm /etc/ssh/ssh_host_rsa_key* rm /etc/ssh/ssh_host_dsa_key* rm /etc/ssh/ssh_host_ecdsa_key*
使用ssh命令行 (OpenSSH),我可以指定服务器的主机密钥指纹吗?
这可以通过 winscp.com 使用(例如) -hostkey="ssh-rsa 2048 AA:BB:CC...etc
我已经阅读了几次手册页,如果我错过了那里的明显内容,我深表歉意。
我不想只是自动接受主机密钥,也不想要求用户更新他们的known_hosts,而是在命令行上以某种形式指定主机密钥。
我/etc/ssh/sshd_config在 Ubuntu 12.04 测试服务器上推出了一个新的 Puppet。该配置与之前的配置完全相同,只是删除了以下行:
HostKey /etc/ssh/ssh_host_ecdsa_key
Run Code Online (Sandbox Code Playgroud)
我注意到我从那时开始尝试连接到盒子时遇到了很多类似但不同的错误,例如:“ %hostname%的 RSA 主机密钥已更改,相应 IP 地址%ipaddress%的密钥 未更改。 ”
我认为这是因为我的计算机以前默认使用 ECDSA 密钥,而现在不可用。因此,我将该行添加回sshd_config并重新启动了 SSH。
它并没有完全解决这个问题,从那时起我就遇到了不断的问题。我将能够多次连接到服务器,甚至可能连续几天。然后突然间我开始收到主机密钥已更改的错误并且服务器停止接受我的公钥进行身份验证。
似乎总是一旦我弄乱它一段时间并从不同的位置连接,我将突然能够再次连接到我的公钥并且我不再收到关于可能的中间人的错误攻击。
几天前我尝试重新生成所有 3 个主机密钥(删除它们并运行dpkg-reconfigure openssh-server重新生成它们)。正如预期的那样,我必须删除旧密钥并接受新密钥才能连接。我想也许它当时已经解决了,但现在问题又回来了。
/etc/ssh/自从我上次重新生成它们以来,没有修改任何主机密钥——所以可能会导致我经常无法连接,让我的公钥不起作用,然后最终接受新密钥并让一切重新开始正常工作一阵子?
当事情不正常时(当我收到关于主机密钥更改的错误,然后服务器停止接受我的公钥时),没有任何内容写入服务器的/var/log/auth.log. 这让我想到有时它可能会以某种方式击中不同的机器,但我不知道这是怎么可能的,因为 DNS 条目是正确的并且总是返回相同的 IP 地址。
我正在尝试通过 jumpbox 进行 SSH,但 SSH 似乎有意检查 jumpbox 的主机密钥,即使我告诉它不要使用普通-o StrictHostKeyChecking=no -o UserKnownHostsFile=no命令行选项。
如果我直接通过 SSH 连接到 jumpbox,我可以让 SSH 按预期忽略错误:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa jumpuser@jumpbox
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加代理跳转选项,我突然收到错误消息。错误不是来自 jumpbox 在 jumpbox 上的任何 .ssh 目录中没有 known_hosts 文件,我也没有以 jumpuser 身份登录:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa -J jumpuser@jumpbox jumpuser@10.10.0.5
Run Code Online (Sandbox Code Playgroud)
错误信息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is …Run Code Online (Sandbox Code Playgroud) 远程用户首次尝试使用 Mac OS X 下的“传输”客户端连接到我的 SFTP/SSH 服务器,并发现主机密钥指纹与预期值不匹配。
我有显示指纹的屏幕截图,并将其与ssh-keygen -lf /etc/ssh/ssh_host_dsa_key和的输出进行了比较ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub,但它与其中任何一个都不匹配。
我也未能成功地将指纹与cut -d ' ' -f 2 < /etc/ssh/ssh_host_dsa_key.pub | base64 -d | sha1sum和的输出进行比较cut -d ' ' -f 2 < /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha1sum(因为似乎正在使用不同的指纹算法?)。
客户端消息框标题为(翻译成英文)
<主机名>的主机密钥未知
和国家
服务器未知。主机密钥的指纹是<16个八位位组>。( 允许 ) ( 拒绝 ) [ ] 始终
因此,没有指示是否使用 RSA 或 DSA 密钥,或者是否使用 MD5 或某种 SHA 算法来创建指纹。
显示给远程用户的指纹有 16 个以冒号分隔的八位字节,因此它似乎没有使用 SHA-224 或更高版本。更新:我刚刚注意到,即使 SHA-1 哈希值也有 20 个八位字节,因此显示的指纹显然不是任何 …
我正在尝试从基于 Mac OS X 10.5 Leopard Server 的中央备份服务器到运行 Fedora 10 和 CentOS 5.2 的两台 Linux 服务器设置 SSH 主机密钥。我们通常采取的流程是有效的,将密钥放在 ~/.ssh/authorized_keys 中,但它仍然提示输入密码。
我不是这些盒子的常规管理员,我知道默认设置可能是禁用 SSH 主机密钥。如何启用 SSH 主机密钥?
更新:我已经在 /etc/ssh/ssd_config 中取消注释了 'PubkeyAuthentication yes' 并运行了service restart sshd,但这没有用。取消注释所有三行(“RSAAuthentication”、“PubkeyAuthentication”和“AuthorizedKeysFile”),更正 ~/.ssh 上的权限并重试。还是没有爱。
当我运行时ssh -v user@host,在提示输入密码之前和一些 GSS 错误之后,我得到以下信息:
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/shortname/.ssh/identity
debug1: Trying private key: /Users/shortname/.ssh/id_rsa
debug1: Trying private key: /Users/shortname/.ssh/id_dsa
debug1: Next authentication method: password
Run Code Online (Sandbox Code Playgroud)
进一步的建议?
另一个更新:对权限~/和~/.ssh/700个。
我一直在运行以创建主机密钥的命令如下:
cat /blah/ssh_keys_for_shortname/id_dsa.pub …Run Code Online (Sandbox Code Playgroud) 我有四台正在运行的 Azure VM 机器Ubuntu 20.04.3,我经常关闭它们。昨天我关闭了它们,今天早些时候我重新启动了它们。通常这不会出现任何问题。
今天,其中一台机器开始给我带来可怕的WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED:
\xc2\xbb ssh machine-two \n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ \n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \nThe ECDSA host key for machine-two.westeurope.cloudapp.azure.com has changed, \nand the key for the corresponding IP address 23.231.121.245 \nis unknown. This could either mean that \nDNS SPOOFING is happening or the IP address for the host \nand its host key have changed at the same time. \n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \n@ WARNING: REMOTE HOST IDENTIFICATION …Run Code Online (Sandbox Code Playgroud)