我一直在使用以下命令调试 SSH 连接:
ssh -vT [email protected]
我收到了以下消息:
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to smilescooter.com port 22.
debug1: Connection established.
debug1: identity file /Users/jerry/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_dsa-cert type -1
debug1: identity file /Users/jerry/.ssh/id_ecdsa type 2
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_ecdsa-cert type -1
...
debug3: hostkeys_foreach: reading file "/Users/jerry/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /Users/jerry/.ssh/known_hosts:19
debug3: load_hostkeys: loaded 1 keys from smilescooter.com
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
幸运的是,问题已经解决,但我感兴趣的是“身份文件文件路由类型n“意思是,这里的 n 可能是 -1,0,1,2...
后面的数字(1/2/3..)代表什么调试在每个调试行的开头是什么意思?
如果我在谷歌上搜索到关于这个问题的结果,我就不会在这里问了。谷歌上有很多关于 SSH 问题调试的结果,但似乎没有人谈论我在这里问的这两个问题。
提前致谢。
答案1
身份文件只是一个私钥(或证书),通常通过运行来创建ssh-keygen
。默认情况下,这将创建一个 RSA 密钥,但您可以使用选项更改它-t
。根据您的输出,您有一个 RSA 和一个 ECDSA 密钥。
中的数字identity file type .../.ssh/id_* type <number>
只是整数值(从零开始)sshkey_types 枚举和 -1 含义错误(与大多数 POSIX 函数一样)。您可以看到文件名还包含键类型:
enum sshkey_types {
KEY_RSA, // id_rsa has type 0
KEY_DSA, // id_dsa has type 1, but as you have no id_dsa key file, -1 is used
KEY_ECDSA, // id_ecdsa has type 2
...
错误消息key_load_public:没有此文件或目录之后身份文件...消息很奇怪,似乎相应的公钥文件被删除了。它们的文件名与私钥相同,但添加了后缀.pub
。这并不悲惨,因为可以使用 重新生成公钥(但出于显而易见的原因,不能反过来)ssh-keygen -y
。
调试输出在这篇文章中有详细的解释Wikibooks 上有关 OpenSSH 日志记录的文章简而言之:调试[123]:...行前缀表示其后面消息的调试级别。它对应于您在命令行中给出的 s 数量-v
(最多为 3)。即,如果您设置-v
,调试1消息将被打印,-vv
你将获得调试1和调试2等等(有点奇怪的是,你得到了调试3消息,即使您只给出了一个-v
,但是)
答案2
正如输出所示,“type n”是密钥类型的内部 ID(RSA、ECDSA、ED25519 等)。列表可在sshkey.c
。
同样地,n之后debug
是调试级别。您显示的输出是针对-vvv
,或调试日志记录最高级别 3(最高级别),因此debug1
,debug2
和debug3
。
两者的完整细节通常仅对 OpenSSH 开发人员(主要是 OpenBSD 开发人员)有用,因此我不希望这被广泛讨论。