![pam_ssh_agent_auth: ssh user@host를 사용하는 sudo에는 비밀번호가 필요하지만 ssh user@host 'bash'에는 비밀번호가 필요하지 않습니다.](https://linux55.com/image/183121/pam_ssh_agent_auth%3A%20ssh%20user%40host%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20sudo%EC%97%90%EB%8A%94%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%98%EC%A7%80%EB%A7%8C%20ssh%20user%40host%20'bash'%EC%97%90%EB%8A%94%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
ssh-agent를 관리하기 위해 gpg-agent를 사용합니다.
내 컴퓨터에서: ssh-add -L
서버에서 사용되는 공개 키를 인쇄합니다. ForwardAgent
열었습니다. pam.d/sudo
그리고 sudoers
구성되었습니다.
그런 다음 ssh user@host
gpg echo $SSH_AUTH_SOCK
-agent 중 하나를 인쇄하십시오. run sudo -i
이나 다른 명령을 사용하면 sudo
비밀번호를 묻습니다.
ssh user@host 'bash'
또는 다른 쉘을 사용하면 sudo
비밀번호를 묻지 않고 실행할 수 있습니다. 그런데 이 방법은 셸에서 다음과 같은 프롬프트를 인쇄하지 않습니다 $
.
로그 설정 pam.d/sudo
및 auth ... 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-agent
htop은 내 SSH 로그인 사용자가 소유한 htop에 나열되어 gpg-connect-agent
작동합니다. TTY
그리고 GPG_TTY
그것은 동일합니다.
htop
gpg-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의 원래 변수를 덮어쓰는 변수를 다시 내보내는 이유를 알아냈습니다 .