pam_ssh_agent_auth:sudo 使用 ssh user@host 要求输入密码,但 ssh user@host 'bash' 不要求输入密码

pam_ssh_agent_auth:sudo 使用 ssh user@host 要求输入密码,但 ssh user@host 'bash' 不要求输入密码

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

在我的电脑上: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 可以在没有密码的情况下工作。

答案1

我找到原因了我的交互式 shell 脚本重新导出SSH_AUTH_SOCK变量,该变量会覆盖 sshd 中的原始变量。

相关内容