我有一个用户的Ubuntu服务器: ubuntu和user
我使用ssh -A连接到每个用户(将我的本地机器密钥传递给SSH)。 从任何用户,我可以连接到Github的SSH服务器:
$ ssh -T [email protected] ... Hi gabipetrovay! You've successfully authenticated, but GitHub does not provide shell access.
但是当我尝试使用sudo ,代表user从ubuntu连接
sudo -E -u user ssh -T [email protected]
我得到一个Permission denied (publickey)错误。
使用-vv选项,我可以看到,当代表ubuntu的user使用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执行ssh和git命令。
除了向sudoers添加Defaults env_keep+=SSH_AUTH_SOCK ,还需要让user访问由SSH_AUTH_SOCKvariables指向的文件。 它没有默认启用。