对于 MacOS,带有 t 选项和 rsa 类型的 ssh-keyscan 不会返回公钥

对于 MacOS,带有 t 选项和 rsa 类型的 ssh-keyscan 不会返回公钥

具有以下条件:

  • Windows 10 在控制台中启用了 Git 的 bash
  • MacOS(El Capitan)

如果执行

ssh-keyscan -t ecdsa 192.168.1.X

在两个操作系统中都返回预期相同的数据,例如:

# 192.168.1.X:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
192.168.1.X ecdsa-sha2-nistp256 XxXxXxX...XxXxXxX

上述命令已在同一个局域网中的 6 台不同 PC 上进行了测试。到目前为止一切正常。此外,所有命令对于以下密钥类型也都有效ed25519,例如:

ssh-keyscan -t ed25519 192.168.1.X

但如果密钥类型改为rsa如下形式:

ssh-keyscan -t rsa 192.168.1.X

在 Windows 中返回与前两个键相同的结构 -情况在 MacOS 中始终只返回

# 192.168.1.X:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3

正如您所看到的,只有“评论”,但没有看到公钥。

为什么会出现这种情况?是否可以修复它或者做一些额外的配置?

笔记

如果没有过滤器或没有指明密钥类型 - 则不使用该-t选项 - 因此

ssh-keyscan 192.168.1.X

在 Windows 中返回提到的 3 种键类型,但在 MacOS 中仅返回 2 种(始终没有任何内容rsa

详细

执行如下:

ssh-keyscan -t rsa -v 192.168.1.X

输出为:

debug1: match: OpenSSH_8.9p1 Ubuntu-3 pat OpenSSH* compat 0x04000000
# 192.168.1.X:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
debug1: Enabling compatibility mode for protocol 2.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client [email protected] <implicit> none
debug1: kex: client->server [email protected] <implicit> none

相关内容