如何从 .ssh/known_hosts 中提取指纹?

tre*_*ell 84 security ssh fingerprint known-hosts

我的笔记本电脑有一个填充良好的~/.ssh/known_hosts文件。我想在从我的桌面连接到远程主机时利用它,因为追踪指纹可能是一件真正的苦差事。但是,我似乎无法找到询问ssh-keygenssh-keyscan告诉我已知主机的本地已知指纹的方法。有任何想法吗?

slm*_*slm 107

试试这个命令:

% ssh-keygen -l -f ~/.ssh/known_hosts

2048 c2:e7:c0:9f:cd:c8:54:88:ac:b3:6b:a6:51:73:2b:e3 mach1,192.168.1.3 (RSA)
2048 a2:5e:8c:4e:2e:be:be:eb:23:12:5e:fe:6c:4b:23:dd mach2,192.168.1.1 (RSA)
1024 ae:5f:bc:e3:33:c3:dd:45:1e:18:1a:46:d1:d6:d2:39 mach3,192.168.1.6 (RSA)
...
...
Run Code Online (Sandbox Code Playgroud)

只想要一个主机:

% ssh-keygen -l -f ~/.ssh/known_hosts -F mach1
2048 c2:e7:c0:9f:cd:c8:54:88:ac:b3:6b:a6:51:73:2b:e3 mach1 (RSA)
Run Code Online (Sandbox Code Playgroud)

资源

http://www.gossamer-threads.com/lists/openssh/users/49503

  • 值得注意的是,最新版本的 openssh 默认为 SHA256 哈希。要获得旧的 md5 哈希,请使用 `-E md5` 选项。 (14认同)
  • 谢谢!我不知道你可以在 known_hosts 文件中使用 `-l`。这是一个更好地解决我的问题的版本:`ssh-keygen -l -f ~/.ssh/known_hosts -F example.com` (9认同)
  • 顺便说一句,-F 对我来说很重要的原因是我安装的任何版本的 SSH 都对 known_hosts 文件中的所有主机名进行了哈希处理。我不能只搜索我想要的行。(如果有人得到我的私钥,这是一种有用的安全措施——他们不太可能弄清楚它可以让他们进入哪些机器。) (5认同)
  • 如果使用非标准端口:`[example.com]:1234` (3认同)
  • 要获取 SSH 服务器的主机密钥指纹(将示例 IP 替换为您服务器的 IP 或主机名):`ssh-keyscan 123.123.12.34 | ssh-keygen -l -f -` (3认同)