如何获取当前authorized_keys ssh 密钥的注释?

kro*_*old 6 linux ssh ubuntu

编辑:我真正需要知道的是,来自authorized_keys 的ssh 密钥已用于识别当前登录的用户。

根据“man sshd”:

Protocol 2 public key consist of options, keytype, base64-encoded key, comment.
Run Code Online (Sandbox Code Playgroud)

我看到当我使用 ssh-keygen 时,注释通常是用户的本地身份。当我在远程计算机上时,有什么方法可以访问此值吗?(有点像 SSH_CLIENT shell 变量)

(假设我将评论强制为某种远程身份,我想从 shell 脚本中记录它!这是在 ubuntu 上)

jti*_*man 3

这是为了方便起见,来自ssh-keygenDebian 的手册页:

\n\n
\n

对于 RSA1 密钥,密钥文件中还有一个注释字段,只是为了方便用户帮助识别密钥。注释可以说明密钥的用途,或者有用的内容。创建密钥时,注释被初始化为\n \xe2\x80\x9cuser@host\xe2\x80\x9d\n,但可以使用 -c 选项进行更改。

\n
\n\n

我认为您最接近的确定用于登录的键是使用ssh-add, with -L ,从手册页:

\n\n
\n

-L 列出代理当前代表的所有身份的公钥参数。

\n
\n\n

可以将 ssh 守护进程的日志记录级别增加到 DEBUG1:

\n\n
LogLevel DEBUG1\n
Run Code Online (Sandbox Code Playgroud)\n\n

日志将显示用于登录的 SSH 密钥的 RSA 指纹:

\n\n
Aug 13 08:52:56 ubuntu_test sshd[17115]: debug1: matching key found: file /home/username/.ssh/authorized_keys, line 1\nAug 13 08:52:56 ubuntu_test sshd[17115]: Found matching RSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过以下方式获取密钥的指纹ssh-keygen

\n\n
\n

-l 显示指定公钥文件的指纹。还支持 RSA1 私钥。对于 RSA\n 和 DSA 密钥,ssh-keygen 会尝试查找匹配的公钥文件并打印其指纹。\n 如果与 -v 结合使用,则会随指纹一起提供密钥的 ASCII 艺术表示形式。

\n
\n\n

从授权密钥文件中,您必须将每一行拆分为一个新文件才能使用ssh-keygen -l. 下面是一个 Ruby 脚本示例,可以执行此操作:

\n\n
#!/usr/bin/env ruby\nFile.open("/home/username/.ssh/authorized_keys").each do |l|\n  file_name = l.split(" ")[2]\n  key_file = File.new("#{file_name}.pub_key", "w")\n  key_file.puts l\n  key_file.close\n  puts %x{ssh-keygen -l -f #{file_name}.pub_key}\nend\n
Run Code Online (Sandbox Code Playgroud)\n