如何通过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. 

但是当我尝试使用sudo ,代表userubuntu连接

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

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

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

直接形成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)), 

ubuntu使用sudo -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)), 

所以看来,通过sudo的SSH_AUTH_SOCK套接字不考虑。

我还将Defaults env_keep+=SSH_AUTH_SOCK添加到/etc/sudoers但仍不起作用。

我怎样才能做到这一点? 我需要代表user用户从用户ubuntu执行sshgit命令。

除了向sudoers添加Defaults env_keep+=SSH_AUTH_SOCK ,还需要让user访问由SSH_AUTH_SOCKvariables指向的文件。 它没有默认启用。