pam_ssh_agent_auth: ssh user@host를 사용하는 sudo에는 비밀번호가 필요하지만 ssh user@host 'bash'에는 비밀번호가 필요하지 않습니다.

pam_ssh_agent_auth: ssh user@host를 사용하는 sudo에는 비밀번호가 필요하지만 ssh user@host 'bash'에는 비밀번호가 필요하지 않습니다.

ssh-agent를 관리하기 위해 gpg-agent를 사용합니다.

내 컴퓨터에서: ssh-add -L서버에서 사용되는 공개 키를 인쇄합니다. ForwardAgent열었습니다. pam.d/sudo그리고 sudoers구성되었습니다.

그런 다음 ssh user@hostgpg echo $SSH_AUTH_SOCK-agent 중 하나를 인쇄하십시오. run sudo -i이나 다른 명령을 사용하면 sudo비밀번호를 묻습니다.

ssh user@host 'bash'또는 다른 쉘을 사용하면 sudo비밀번호를 묻지 않고 실행할 수 있습니다. 그런데 이 방법은 셸에서 다음과 같은 프롬프트를 인쇄하지 않습니다 $.

로그 설정 pam.d/sudoauth ... debug가져오기:

Nov 10 16:46:23 nixos sudo[30150]: pam_ssh_agent_auth: Beginning pam_ssh_agent_auth for user vonfry
Nov 10 16:46:23 nixos sudo[30150]: pam_ssh_agent_auth: Attempting authentication: `vonfry' as `vonfry' using ~/.ssh/authorized_keys:~/.ssh/authorized_keys2:/etc/ssh/authorized_keys.d/%u
Nov 10 16:46:23 nixos sudo[30150]: pam_ssh_agent_auth: Contacted ssh-agent of user vonfry (1000)
Nov 10 16:46:23 nixos gpg-agent[4022]: scdaemon[4022]: pcsc_establish_context failed: no service (0x8010001d)
Nov 10 16:46:23 nixos sudo[30150]: pam_ssh_agent_auth: Failed Authentication: `vonfry' as `vonfry' using ~/.ssh/authorized_keys:~/.ssh/authorized_keys2:/etc/ssh/authorized_keys.d/%u

서버에서 gpg-agenthtop은 내 SSH 로그인 사용자가 소유한 htop에 나열되어 gpg-connect-agent작동합니다. TTY그리고 GPG_TTY그것은 동일합니다.

htopgpg-agent하위 프로세스가 있음 을 보여줍니다.scdaemon --multi-server

나는 주변을 검색해 보았지만 gpg-agent[4022]: scdaemon[4022]: pcsc_establish_context failed: no service (0x8010001d)유용한 것을 찾지 못했습니다.

EDIT1: SSH에 로그인한 사용자에 대해 gpg-agent 데몬을 종료하면 sudo는 비밀번호 없이 작동합니다.

답변1

SSH_AUTH_SOCK내 대화형 쉘 스크립트가 sshd의 원래 변수를 덮어쓰는 변수를 다시 내보내는 이유를 알아냈습니다 .

관련 정보