密钥验证后获取SSH验证数据


0

是否有可能从服务器端检索完成后密钥验证中使用的数据?例如,从pam模块获取使用的公钥,使用的挑战(如果成功)。

在Debian 9中使用openssh。


如果它存在,这将是一个严重的安全漏洞。
harrymc

对不起,我解释得很糟糕。我编辑了这个问题。我的意思是,从服务器端获取这些信息,就像在成功进行密钥验证后调用的pam模块一样
Federico Taschin

Answers:


0

你会发现有趣的以下Stack Exchange文章:
我可以找出用于访问帐户的ssh密钥吗?

这个想法是通过设置从日志中获取信息 /etc/ssh/sshd_config 该 的价值 LogLevelVERBOSE

您可能会发现该脚本特别有用 F. Hauri回答 在哪里创建要添加到的脚本 /etc/bash.bashrc 或用户的 .bashrc,从SSH登录后即可 创建以下环境变量:

set | grep ^SSH
SSH_CLIENT='192.168.1.31 43734 22'
SSH_CONNECTION='192.168.1.31 43734 192.168.1.2 22'
SSH_KEY_USER=user@mydesk
SSH_TTY=/dev/pts/2

脚本本身在下面复制,但我建议阅读原文 回答更多信息:

ssh_oPwd=$OLDPWD
ssh_oUmask=$(umask)
umask 077
ssh_tempdir=$(mktemp -d /tmp/ssh-id-XXXXXXX)
cd $ssh_tempdir || exit 1

ssh_crtFp=$(
    sed -ne "/sshd.\($(($(ps ho ppid $PPID)))\|$PPID\).:.*\(Accepted publickey\|matching .SA key\)/{s/^.* //g;h};\${x;p}" /var/log/sshdusers.log
)
for ((ssh_i=1;ssh_i<=$(wc -l <$HOME/.ssh/authorized_keys);ssh_i++));do
    export ssh_line="$(sed -ne ${ssh_i}p <$HOME/.ssh/authorized_keys)"
    echo "$ssh_line" >tempKey
    export ssh_lFp=($(ssh-keygen -l -f tempKey))
    if [ "${ssh_lFp[1]}" == "$ssh_crtFp" ] ;then
        export SSH_KEY_USER=${ssh_line##* }
        break
      fi
  done

cd $OLDPWD
OLDPWD=$ssh_oPwd
rm -fR $ssh_tempdir
umask $ssh_oUmask
unset ssh_lFp ssh_line ssh_i ssh_crtFp ssh_tempdir ssh_oUmask ssh_oPwd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.