获取用于连接的公钥名称

获取用于连接的公钥名称

我创建了一个 shell 脚本,该脚本向连接的用户询问一个问题,然后向他提供提示。shell 将问题发布到数据库进行记录。问题是我们的开发人员使用的是共享帐户,但每个用户都有自己的私钥。有没有办法用 shell 脚本 (bash) 读取连接用户拥有的公钥?

答案1

也有类似的问题Unix和Linux操作系统考虑到这一点,你可以 grep 日志中连接 IP 的最新条目:

REMOTE_IP=${SSH_CONNECTION%% *}
grep -B1 ${REMOTE_IP} /var/log/auth.log

假设您使用的是 debian,sshd 日志将转到auth.log。如果使用类似 RH 的发行版,则它们将位于secure.log

答案2

您可以通过设置 LogLevel 指令将 sshd 日志记录级别提升至 VERBOSE/etc/ssh/sshd_config

LogLevel DEBUG

这会导致 sshd 为每个连接记录以下内容

Aug 17 12:16:20 centos sshd[9587]: Connection from 192.168.254.200 port 58107
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9588]: Postponed publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: Found matching RSA key: 54:d2:06:cf:85:ac:89:f6:3c:a8:73:c7:a1:30:c2:8b
Aug 17 12:16:20 centos sshd[9587]: Accepted publickey for user from 192.168.254.200 port 58107 ssh2
Aug 17 12:16:20 centos sshd[9587]: pam_unix(sshd:session): session opened for user user by (uid=0)

环境变量 SSH_CONNECTION 包含当前连接的信息

192.168.254.200   58107          192.168.254.89   22 
<sourece IP>      <source port>  <destination IP> <destination port>

只需编写一点脚本就可以将两者结合在一起。

相关内容