请注意,我在这里专门询问命令行,我确切地知道如何使用 ssh“配置”文件来解决这个问题。
从 Windows 到 Linux 计算机建立 ssh 连接时,您经常会收到“输入时 MAC 损坏”错误。
通过在命令行上指定 MAC 可以轻松纠正此问题,如以下两个示例中所示:
ssh -m hmac-sha2-256 [email protected]
ssh -o "MACs [email protected]" [email protected]
但是,如果我想使用计算机 1 作为计算机 2 的跳转主机,情况就不同了。标准命令行将是
ssh -J [email protected] [email protected]
这会产生上述错误(正如预期的那样)
但是,添加 MAC 选项(以各种方式)
ssh -J [email protected] -m hmac-sha2-256 [email protected]
ssh -m hmac-sha2-256 -J [email protected] [email protected]
ssh -J [email protected] -o "MACs [email protected]" [email protected]
ssh -o "MACs [email protected]" -J [email protected] [email protected]
对我来说毫无作用,我仍然收到错误。
记录显示,在我的设置中,只有 computer1 首先存在 MAC“问题”,当我在本地时,我可以直接连接到 computer2,而无需任何额外的设置。
那么,有没有什么办法可以解决这个问题,只使用命令行?
如果我将以下内容添加到我的 SSH 配置文件中,此设置将完美运行,但对于此处的用例,我非常希望有一个不依赖于配置文件的命令行解决方案。(也不依赖于服务器上配置的更改)。但事实上,此配置更改确实有效,这似乎表明我的环境没有任何问题(嗯,我猜除了 MAC 问题存在之外),这只是我的命令行选项的问题。
Host computer1.domain
MACs [email protected]
编辑:按照@George的建议添加 -vvv 揭示了一件看起来很有趣的事情,但我真的不知道如何解决它。根据调试消息,当使用 JumpHost 选项运行 ssh 时,会生成一个子命令,而命令行上指定的选项似乎没有被带进来,因此我仍然遇到原始问题:
debug1: Setting implicit ProxyCommand from ProxyJump: "ssh" -vvv -W "[%h]:%p" computer1.domain
debug1: Executing proxy command: exec "ssh" -vvv -W "[computer2.domain]:22" computer1.domain
debug3: spawning "ssh" -vvv -W "[computer2.domain]:22" computer1.domain as subprocess
其余的调试输出显示我的客户端同意 computer1 使用[email protected],而这正是我试图告诉它不要使用的 MAC 地址