如何通过 sudo 传递 SSH_AUTH_SOCK(权限被拒绝(公钥))。

如何通过 sudo 传递 SSH_AUTH_SOCK(权限被拒绝(公钥))。

我有一台 Ubuntu 服务器,其用户为ubuntuuser

ssh -A我使用(将我的本地机器密钥传递给 SSH)连接到每个用户。从任何我可以连接到 Github 的 SSH 服务器的用户数:

$ ssh -T [email protected]
...
Hi gabipetrovay! You've successfully authenticated, but GitHub does not provide shell access.

但是当我尝试ubuntu使用sudo代表进行连接时user

sudo -E -u user ssh -T [email protected]

我收到一个Permission denied (publickey)错误。

使用-vv选项,我可以看到,当我代表机器上的密钥ssh以 sudo 身份运行时,不会提供给 ssh 服务器。作为比较:userubuntu

直接形式user

debug2: key: /Users/gabriel/.ssh/id_rsa (0x7fbf09390020),
debug2: key: /home/mono/.ssh/id_rsa ((nil)),
debug2: key: /home/mono/.ssh/id_dsa ((nil)),
debug2: key: /home/mono/.ssh/id_ecdsa ((nil)),
debug2: key: /home/mono/.ssh/id_ed25519 ((nil)),

使用:ubuntusudo -u user

debug2: key: /home/mono/.ssh/id_rsa ((nil)),
debug2: key: /home/mono/.ssh/id_dsa ((nil)),
debug2: key: /home/mono/.ssh/id_ecdsa ((nil)),
debug2: key: /home/mono/.ssh/id_ed25519 ((nil)),

所以看来通过sudoSSH_AUTH_SOCK套接字是不被考虑的。

我也添加了,Defaults env_keep+=SSH_AUTH_SOCK/etc/sudoers仍然不起作用。

我该如何实现这一点?我需要代表用户执行来自用户的ssh命令。gitubuntuuser

答案1

除了添加到 之外Defaults env_keep+=SSH_AUTH_SOCKsudoers您还需要授予user对 SSH_AUTH_SOCK 变量指向的文件的访问权限。默认情况下不启用它。

相关内容