如何使用 ssh-add 列出添加到 ssh-agent 的密钥?

如何使用 ssh-add 列出添加到 ssh-agent 的密钥?

如何以及在哪里可以检查哪些密钥已添加ssh-add到我的ssh-agent

答案1

用于ssh-add -l按指纹列出它们。

$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)

或者ssh-add -L获取 OpenSSH 格式的完整密钥。

$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa

后一种格式与将它们放入~/.ssh/authorized_keys文件中的格式相同。

答案2

令人惊讶的是,MacOS 版本ssh-add在某些时候停止显示文件名,就像 Linux 版本一样。我编写了这个脚本,它对在~/.ssh/.

我将该函数称为ssh-add_wfwf = with file.该功能的详细信息如下:

$ type ssh-add_wf
ssh-add_wf is a function
ssh-add_wf ()
{
    while read -r line; do
        for file in ~/.ssh/*.pub;
        do
            printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file";
        done | column -t | grep --color=auto "$line" || echo "$line";
    done < <(ssh-add -l | awk '{print $2}')
}

例子

$  ssh-add_wf
 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ssh-add上面,输出中与目录中的文件匹配的任何键都~/.ssh/将在第四列的输出中包含该文件的名称。任何不存在的键都会将该列清空。在此输出中,我们有 3 个键,它们具有匹配的文件。

功能力学

该脚本使用 2 个循环。外部循环是 a while,它接受 的输出ssh-add。此输出是加载到 中的所有 SSH 密钥的指纹ssh-agent

内部循环是一个for循环,它遍历与此模式匹配的所有文件的内容~/.ssh/*.pub。对于每个文件,我们询问它ssh-keygen -lf <file>,然后删除此输出的第一列:

...前...

第4096章 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [电子邮件受保护]

...后...

SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [电子邮件受保护]

然后,该字符串与文件名一起打印:

printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file"

循环执行结束时的结果如下:

|列-t | grep "$line" ||回显“$行”

这会格式化输出,使其采用列格式 ( column -t)。

ssh-add此时,我们通过 来查看指纹的输出grep "$line"。如果找到匹配项,我们将打印printf输出,否则我们将仅打印来自 , 的原始ssh-add指纹$line

参考

相关内容