ssh-add
已为ssh-agent
添加了哪些键?#1 楼
在-l
上使用ssh-add
选项以按指纹列出它们。$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)
或与
-L
一起获得OpenSSH格式的完整密钥。$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa
后一种格式与将其放入
~/.ssh/authorized_keys
文件中的格式相同。#2 楼
令人惊讶的是,ssh-add
的MacOS版本在某些时候停止显示文件名,与Linux变体一样。我编写了此脚本,该脚本对于在~/.ssh/
中具有相应文件的指纹也具有相同的功能。 我用文件调用函数
ssh-add_wf
,wf =。该函数的详细信息如下:$ 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')" "$file";
done | column -t | grep --color=auto "$line" || echo "$line";
done < <(ssh-add -l | awk '{print }')
}
示例
$ ssh-add_wf
SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan (RSA) /Users/myuser/.ssh/ssh_myuser@mydom.lan_id_rsa.pub
SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.com (RSA) /Users/myuser/.ssh/github_myuser@mydom.com_id_rsa.pub
SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.com (RSA) /Users/myuser/.ssh/ssh_myuser@mydom.com_id_rsa.pub
SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
上面的所有键在
ssh-add
'与~/.ssh/
目录中的文件匹配的输出将在第4列的输出中包含文件名。没有的任何键将使该列为空。在此输出中,我们有3个键,这些键具有匹配的文件。功能机制
脚本使用2个循环。外环是一个
while
,它接收ssh-add
的输出。此输出是加载到ssh-agent
中的SSH密钥的所有指纹。内部循环是
for
循环,该循环穿过与该模式~/.ssh/*.pub
匹配的所有文件的内容。对于每个文件,我们使用ssh-keygen -lf <file>
对其进行查询,然后删除此输出的第一列:4096 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser @ mydom.lan
...之后...
SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan
然后将这个字符串与文件名一起打印:
printf“%s%s \ n”“ $(ssh-keygen -lf” $ file “ | awk'{$ 1 =”“} 1')”“ $ file”
执行此循环的末尾是:
|列-t | grep“ $ line” || echo“ $ line”
这将格式化输出,使其采用列格式(
column -t
)。 至此,我们将通过
ssh-add
查看来自grep "$line"
的指纹输出。如果找到匹配项,则打印printf
输出,否则退回到仅打印ssh-add
和$line
的原始指纹。参考文献
检查ssh公钥指纹
评论
发生的是,OpenSSH采用了一种新的私钥存储格式,该格式支持私钥内部的注释,如果您没有密码短语,则当然不能更改它。如果私钥以这种新文件格式存储(可以通过文件顶部的BEGIN OPENSSH私钥识别),则ssh-add -l将显示它;如果不是,它将显示从中加载密钥的文件的名称。
–马克·里德(Mark Reed)
20 Dec 9'在20:31
评论
[rahul @ srv1〜] $ ssh-add -l无法打开与身份验证代理的连接。
–拉胡尔·帕蒂尔(Rahul Patil)
2012年12月20日上午11:11
@RahulPatil您是否在该计算机上运行SSH代理?在添加密钥的同一台计算机上运行此命令,而不是在远程计算机上运行!
– Gertvdijk
2012年12月20日11:18
如果启用了密钥代理转发,则可以在远程主机上运行此命令。
–随钻
13年3月30日在19:58
示例:ssh-agent sh -c'ssh-add; ssh-add -l'
– Kenorb
15年3月26日在21:15
@gertvdijk我实际上是在谈论命名。从名称ssh-add看来,此命令应仅将密钥添加到代理。然后ssh-agent应该知道它持有什么键。我的看法是不同的。
– Shiplu Mokaddim
16年5月6日在13:43