키 인증 후 SSH 인증 데이터 가져오기

키 인증 후 SSH 인증 데이터 가져오기

키 인증이 완료된 후 서버 측에서 키 인증에 사용된 데이터를 검색하는 것이 가능합니까? 예를 들어, pam 모듈에서 공개 키를 사용하려면 챌린지를 사용합니다(성공한 경우).

데비안 9에서 openssh를 사용합니다.

답변1

다음 Stack Exchange 기사에서 흥미로운 내용을 찾을 수 있습니다.
계정에 액세스하는 데 어떤 SSH 키가 사용되었는지 확인할 수 있나요?

to /etc/ssh/sshd_config값을 설정하여 로그에서 정보를 가져오는 아이디어입니다 .LogLevelVERBOSE

특히 다음 스크립트가 유용할 수 있습니다. F. Hauri의 답변SSH에서 로그인한 후 다음 환경 변수를 생성하는 /etc/bash.bashrc사용자의 에 추가할 스크립트가 생성되는 곳은 어디입니까 ?.bashrc

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

관련 정보