linux - ssh-keygen 接受标准输入

标签 linux bash variables ssh-keys

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

此方法有效,因为它说 key 文件无效(肯定是正确的)

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 .我在网上搜索,但许多重定向教程似乎都没有回答我的问题。

最佳答案

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)

关于linux - ssh-keygen 接受标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635360/

相关文章:

linux - 使用 bash shell 脚本挂载图像和编辑配置文件(在文件系统内)

bash - 计算 linux 中制表符的数量

linux - Awk 命令行将参数编写为变量以搜索特定字段

sql-server - 将变量传递给 xp_cmdshell

linux - --data 选项如何在 curl 中工作

linux - 我怎样才能从 shell 脚本获得各种输出?

python - 如果以 `ps -ef` 启动,`subprocess.Popen` 显示运行进程两次

php - OpenShift 操作 Hook 部署问题

bash - 我想删除322个文件名的前8个字符

list - Netlogo:使用概率分配变量