审计一些服务器,我需要authorized_keys文件中所有授权密钥的注释列表。
我如何剪切此文件以显示评论列表,例如 user@host?
任何内容都可以出现在 Key 之前,包括空格
关键注释直接出现在关键
关键评论是该行的最后一项
关键注释可以包含空格
键是每行中最长的字段
希望关键评论仅有的从每一行中提取。
答案1
已更新,包括/^==/
以下行:
perl -nE 'if (/^==/) { print }
elsif (!/^#/ and ($c) = /\b\w+\s+AAAA\S+(.*)$/)
{ $c =~ s/^\s+//; say $c || "<no comment>" }'
GNU sed(使用 POSIX 扩展正则表达式):
sed -nr '/^==/{p; d}; /^#/d;
/.*\<\w+\s+AAAA\S+/{s///; s/^\s+//; s/^$/<no comment>/; p}'
这将跳过禁用的(注释掉的)键,并且[大部分]正确处理包含每个键选项的行(例如from="1.2.3.4" ssh-rsa AAAAB3NzaC1yc2EA my comment
)。
请注意,评论实际上毫无意义——在某些情况下比较密钥指纹可能会更好。
答案2
我怎么能够
cut
...
确切地。
cut -d' ' -f3- .ssh/authorized_keys