文本争论:如何从authorized_keys中获取密钥注释?

文本争论:如何从authorized_keys中获取密钥注释?

审计一些服务器,我需要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

相关内容