
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의 원래 변수를 덮어쓰는 변수를 다시 내보내는 이유를 알아냈습니다 .