从指纹显示密钥的随机图像的命令?

tma*_*gin 5 fingerprint ssh-keys

我有一个ssh-key fingerprint

16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Run Code Online (Sandbox Code Playgroud)

我想看看这个指纹的 randomart 图像。是否有一个命令将此指纹作为输入并输出 randomart 图像?

PS:我不是要求-o VisualHostKeySSH 命令附带的选项。

Par*_*rsa 8

不是。您提供的只是密钥的MD5 指纹。SSH randomart 显示加密算法和散列算法,以及从指纹创建的视觉艺术。OpenSSH 似乎没有提供从指纹本身生成 ASCII 视觉艺术的工具,但该指纹是从您可能有权访问的公钥生成的。如果是这种情况,您可以将该公钥放在一个文件中并ssh-keygen -l在其上运行。

对于特定键:

ssh-keygen -lvf ~/.ssh/<id_whatever_name>
Run Code Online (Sandbox Code Playgroud)

例如,对于known_hosts(可能不实用但对演示有用)中的所有条目

ssh-keygen -lvf ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

对于默认密钥:

ssh-keygen -lv
Run Code Online (Sandbox Code Playgroud)

命令概要:

ssh-keygen -l [-v] [-E <fingerprint_hash>] [-f <input_keyfile>]
Run Code Online (Sandbox Code Playgroud)
  • -l
    • 指定公钥文件的指纹
    • 带有 -v钥匙的指纹和视觉 ASCII 图案
  • -E <hash_algorithm>
    • 指定显示密钥指纹时使用的哈希算法
    • 有效选项:
      • sha256 (默认)
      • md5 (旧系统只使用 md5)
  • -f <key file>
    • 指定生成指纹的 ssh 密钥
      • 任何具有有效公钥格式的东西
        • 包括authorized_keysknown_hosts
    • <key file> 可能包含私人或公共 ssh 密钥
      • 用户可以使用-y选项 从私钥文件中导出公钥
        • 例如 ssh-keygen -yf ~/.ssh/id_asghar
    • 手册页:https : //linux.die.net/man/1/ssh-keygen

笔记:

您可以使用以下命令获取活动 SSH 服务器的 ssh 密钥 ssh-keyscan <host>


命令概要:

ssh-keyscan [-4|-6] [-f -|<file>] [-H] [-p <port>] [-T <timeout>] [-t <key type>] [-v]
Run Code Online (Sandbox Code Playgroud)
  • -4
    • 仅连接到 IPv4 主机
  • -6
    • 仅连接到 IPv6 主机
  • -f
    • 读取主机名或<addrlist> <namelist>
    • -f -
      • 从标准输入读取
    • -f <file>
      • 阅读自 file
    • 格式
      • <host_address>[,<host_address>...] [<host_name>,[<host_name>...]]
      • 每行一个条目
      • 例如

1.2.3.6 someother.fqdn,1.2.3.7,1.2.3.8```

  • -H
    • 在输出中散列主机名
      • 安全选项
      • 散列可以由ssh和使用sshd
  • -p <port>
    • ssh 服务器正在侦听的端口
      • 默认值:22
  • -T <timeout>
    • 等待timeout几秒钟再放弃
    • 默认值:5
  • -t
    • 要从 ssh 服务器获取的密钥类型。
      • 多个类型用逗号分隔
    • 默认值:显示所有可用的键
    • 有效选项:
      • rsa1 (仅限版本 1)
      • rsa
      • dsa
      • ecdsa
      • ed25519
  • -v
    • 详细输出
    • 可以重复多次以根据需要增加详细程度
  • 手册页:https : //linux.die.net/man/1/ssh-keyscan

例如,获取 github.com 的 RSA 密钥的指纹和 ASCII 视觉艺术

% ssh-keygen -lv -E md5 -f <(ssh-keyscan -t rsa github.com)
# github.com:22 SSH-2.0-babeld-7bdc42c4
2048 MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 github.com (RSA)
+---[RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+------[MD5]------+
Run Code Online (Sandbox Code Playgroud)

但是,如果您坚持仅从指纹中获取 randomart,您可能必须自己生成它。据我了解,OpenSSH 使用Drunken Bishop 算法从指纹生成 ASCII 视觉艺术。实现这个算法似乎很简单,在你的主机的 MD5 指纹的情况下 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48,ASCII 视觉艺术是:

+---[   n/a  ]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+------[MD5]------+
Run Code Online (Sandbox Code Playgroud)

这是脚本:

ssh-keygen -lvf ~/.ssh/<id_whatever_name>
Run Code Online (Sandbox Code Playgroud)

  • **注意** 我必须确保 shebang 行是 `#!/usr/bin/env python3`,即这不适用于 Python 2。这太棒了!我一直想知道这个问题,现在我有机会了解它。下次我需要使用它时,我会准备好这个美妙的“drunken_bishop.py”。 (2认同)