Ssh

pam_ssh_agent_auth:sudo 要求 ssh user@host 輸入密碼,但 ssh user@host ‘bash’ 不是

  • November 10, 2020

我使用 gpg-agent 來管理 ssh-agent。

在我的 PC 上:ssh-add -L列印我在伺服器上使用的公鑰。ForwardAgent開了。pam.d/sudosudoers進行了配置。

之後ssh user@hostecho $SSH_AUTH_SOCK列印 gpg-agent 之一。如果執行sudo -i或其他命令帶有sudo,它會詢問密碼。

如果使用ssh user@host 'bash'或其他shell,則sudo無需詢問密碼即可執行。順便說一下,這個方法不會列印任何shell的提示,比如$ .

設置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-agent在我的 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 可以在沒有密碼的情況下工作。

我找到原因了。我的互動式 shell 腳本從 sshd 重新導出SSH_AUTH_SOCK覆蓋原始變數的變數。

引用自:https://unix.stackexchange.com/questions/618898