“known_hosts”条目的不同部分是什么意思?

Ema*_*sev 7 ssh rsa public-key

下面是一个known_hosts条目。从开始ssh-rsa到结束的部分是公钥。其他部分是什么(前面的字符ssh-rsa)?

| 1 | KnbIIJIPrL / 1p7ofUV74sK + J / GC = | wrjOFnPgoF0afgH0PeRtRqSdgvc = SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==

Cak*_*mox 14

|1|是HASH_MAGIC,这表明它是一个散列的known_hosts条目。

接下来的两个 base-64 编码字段(由 分隔|)是随机生成的盐和主机的 SHA-1 哈希。

如果您使用的是较旧版本的 OpenSSH,或者您已HashKnownHosts No在您的/etc/ssh/ssh_config或 ~/.ssh/config` 中进行设置,则条目不会经过哈希处理,看起来更像这样:

remotehostname,192.168.1.100 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdn...etc...
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 5

sshd(8)手册页,SSH_KNOWN_HOSTS FILE FORMAT部分:

 Each line in these files contains the following fields: markers
 (optional), hostnames, bits, exponent, modulus, comment.  The fields are
 separated by spaces.
Run Code Online (Sandbox Code Playgroud)

...

 Alternately, hostnames may be stored in a hashed form which hides host
 names and addresses should the file’s contents be disclosed.  Hashed
 hostnames start with a ‘|’ character.  Only one hashed hostname may
 appear on a single line and none of the above negation or wildcard opera-
 tors may be applied.
Run Code Online (Sandbox Code Playgroud)