首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ssh-keygen接受标准

ssh-keygen接受标准
EN

Stack Overflow用户
提问于 2010-04-14 14:42:44
回答 4查看 11.9K关注 0票数 26

我试图通过bash调用ssh-keygen,使用一个变量作为输入,而不是文件,以获取公钥的指纹。我知道我可以使用临时文件来解决这个问题,但是由于这个问题范围之外的原因,我不想这样做。

此方法不起作用,因为它显示密钥文件无效(它肯定是正确的)

echo $pubkey | ssh-keygen -lf /dev/stdin

这是可行的,但使用的不是变量,而是文件。

ssh-keygen -lf alpha.pub

这是可行的,但不是使用变量,而是使用重定向文件。

ssh-keygen -lf /dev/stdin < alpha.pub

这不起作用,因为我得到一个模棱两可的重定向

ssh-keygen -lf /dev/stdin < $(echo $pubkey)

我希望能深入了解如何让ssh-keygen使用公钥从变量中读取数据,如果可能的话,还可以解释为什么重定向没有做我认为它们应该做的事情。具体地说,为什么|的行为不同于<,以及为什么第三个示例是ambiguous redirect。我在网上搜索了一下,但许多重定向教程似乎都没有回答我的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-14 19:33:37

echo $pubkey | ssh-keygen -lf /dev/stdin
/dev/stdin is not a public key file.

dev/stdin实际上是一个unix管道,而不是常规文件,因此ssh-keygen无法打开该文件

ssh-keygen -lf /dev/stdin  <<<$key
1024 92:6a:3f:5c:1f:78:.....

/dev/stdin指的是使用bash heredoc创建的常规文件。您可以验证这一点:

# ls -l /dev/stdin <<<$pubkey
lrwxrwxrwx 1 root root 15 Feb 11 08:07 /dev/stdin -> /proc/self/fd/0
# ls -l /proc/self/fd/0 <<<$pubkey
lr-x------ 1 juergen juergen 64 Apr 14 13:31 /proc/self/fd/0 -> /tmp/sh-thd-1271250023 (deleted)
票数 20
EN

Stack Overflow用户

发布于 2010-04-14 15:01:41

如果要将字符串重定向为stdin,请使用以下语法:

cmd <<< "some $STR here"

如果要重定向命令的输出,就好像它是一个文件一样,可以这样做:

cmd <( /bin/somecmd )

如果你想使用一个命令作为输出文件,它大体上是一样的:

cmd >( /bin/othercmd )
票数 4
EN

Stack Overflow用户

发布于 2016-04-27 10:39:53

这是一个使用文件/dev/stdin的单行代码,如其他答案中所述。

$ ssh-keygen -lf /dev/stdin <<< $( ssh-keygen -f ~/.ssh/keyname.pem -y )
2048 14:df:c7:b7:f1:26:7f:87:d5:e7:10:6c:ac:af:a2:03 /dev/stdin (RSA)

请注意,这将与使用密码短语的私钥断开。它将与由亚马逊网络服务或OpenStack生成的不使用密码短语的pem文件一起工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2635360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档