我读了这个问题
在答案和解决方案中出现以下命令(在此处改编以用于演示目的)
ssh-keyscan 192.168.1.X | ssh-keygen -lf -
我知道隔离的第一个命令显示public keys
了主机的。当完整的命令被执行时——因此是两个部分——根据最终输出,第一个命令的公钥用于生成自己的指纹。
问题
-
在命令中如何工作ssh-keygen -lf -
?
这是强制性的。我知道l
是显示指纹并f
定义文件名,但如何解释-
?
我读了这个问题
在答案和解决方案中出现以下命令(在此处改编以用于演示目的)
ssh-keyscan 192.168.1.X | ssh-keygen -lf -
我知道隔离的第一个命令显示public keys
了主机的。当完整的命令被执行时——因此是两个部分——根据最终输出,第一个命令的公钥用于生成自己的指纹。
问题
-
在命令中如何工作ssh-keygen -lf -
?这是强制性的。我知道l
是显示指纹并f
定义文件名,但如何解释-
?
默认情况下,
ssh-keygen -l
会以交互方式询问您要显示指纹的公钥文件。用-f
你给它一些现有文件的路径名。如果路径名是
-
(破折号),则从标准输入而不是从文件中读取输入。这是一种常见的做法,很多其他命令也遵循,最值得注意的是
cat
(cat -
从标准输入读取)。在您的管道中,标准输入上的数据由
ssh-keyscan
命令提供。该ssh-keyscan
命令将提取提到的主机的公钥并将其传递给ssh-keygen -l
. 该ssh-keygen
实用程序将输出指纹。如果没有
-f -
,该ssh-keygen
实用程序将尝试使用 的输出ssh-keyscan
作为文件名来读取密钥。这可以说是糟糕的设计,因为很容易以编程方式确定程序的输入是来自终端还是来自非终端的东西(如另一个命令或文件)。所以从某种意义上说,
-f -
可能是不必要的。