首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视ssh连接并从authorized_keys获取登录用户信息

监视ssh连接并从authorized_keys获取登录用户信息
EN

Stack Overflow用户
提问于 2017-03-18 11:26:10
回答 2查看 2.1K关注 0票数 4

当linux系统通过linux连接时,有没有办法使用.ssh/authorized_keys获取相应的登录用户的电子邮件?

我尝试使用/var/log/auth.log中的内容,但找不到记录和.ssh/authorized_keys之间的直接关系。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-18 12:06:50

ssh公钥的最后一列是just a comment field,它不存在于用于登录的私钥中,也不在身份验证尝试期间发送到服务器的公钥中。

服务器授权密钥中的注释可以与客户端公钥中的注释完全不同。

您可以在authorized_keys和日志中找到密钥之间的连接,但是您需要首先使用

代码语言:javascript
复制
ssh-keygen -lf ~/.ssh/authorized_keys
票数 1
EN

Stack Overflow用户

发布于 2017-07-22 01:43:39

可能是有人需要它。Next命令打印有关用于当前会话的ssh键的信息。键是从~/.ssh/authorized_keys的一个标准注释块中提取的。

例如,somebody@test.com将被打印为一个看起来像这样的键:cyb5OrLRv0VR6gZev8...KdECf7Q== somebody@test.com

命令:

代码语言:javascript
复制
export CURRENT_SSH_USER=$(grep $(grep $(grep '@'$(who -m | awk '{print $2}') <(ps -ef) | head -1 | awk '{print $3}')']: Accepted publickey for' /var/log/auth.log | head -1 | awk '{print $16}') <(cat ~/.ssh/authorized_keys | xargs -n1 -I% bash -c 'ssh-keygen -l -f /dev/stdin <<<"%"') | tail -1 | awk '{print $3}')

上面的命令执行以下步骤:

  1. who -m仅与stdin关联的主机名和用户。
  2. 从prev为当前用户获取伪终端从站(例如pts/2 )。命令。
  3. 在进程pts/2列表中搜索ps -ef并提取其pid。
  4. 查找pid,例如21996中的/var/log/auth.log中的如下一行:Jul 22 01:50:39 whatever-i-12345 sshd[21996]: Accepted publickey for ubuntu from 10.10.10.10 port 40411 ssh2: RSA SHA256:V4DD10NklAAAAAHNgxaurm1qaq/TOTejNjXMQABABAB。请确保启用了正确的日志记录。
  5. 一旦找到指纹SHA256:V4DD10NklAAAAAHNgxaurm1qaq/TOTejNjXMQABABAB,它就会将其与/.ssh/authorized_keys中的行匹配,从注释块中检索有关名称的信息。

备注:

仅在Ubuntu16.04.2LTS上测试(GNU/Linux4.4.0-62-通用x86_64)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42873749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档