编辑:我真正需要知道的是,来自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 上)
这是为了方便起见,来自ssh-keygenDebian 的手册页:
\n\n\n对于 RSA1 密钥,密钥文件中还有一个注释字段,只是为了方便用户帮助识别密钥。注释可以说明密钥的用途,或者有用的内容。创建密钥时,注释被初始化为\n \xe2\x80\x9cuser@host\xe2\x80\x9d\n,但可以使用 -c 选项进行更改。
\n
我认为您最接近的确定用于登录的键是使用ssh-add, with -L ,从手册页:
\n\n\n-L 列出代理当前代表的所有身份的公钥参数。
\n
您可以将 ssh 守护进程的日志记录级别增加到 DEBUG1:
\n\nLogLevel DEBUG1\nRun Code Online (Sandbox Code Playgroud)\n\n日志将显示用于登录的 SSH 密钥的 RSA 指纹:
\n\nAug 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\nRun Code Online (Sandbox Code Playgroud)\n\n您可以通过以下方式获取密钥的指纹ssh-keygen:
\n\n\n-l 显示指定公钥文件的指纹。还支持 RSA1 私钥。对于 RSA\n 和 DSA 密钥,ssh-keygen 会尝试查找匹配的公钥文件并打印其指纹。\n 如果与 -v 结合使用,则会随指纹一起提供密钥的 ASCII 艺术表示形式。
\n
从授权密钥文件中,您必须将每一行拆分为一个新文件才能使用ssh-keygen -l. 下面是一个 Ruby 脚本示例,可以执行此操作:
#!/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\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
13054 次 |
| 最近记录: |