我有一台 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.
但是当我尝试ubuntu
使用sudo
代表进行连接时user
sudo -E -u user ssh -T [email protected]
我收到一个Permission denied (publickey)
错误。
使用-vv
选项,我可以看到,当我代表机器上的密钥ssh
以 sudo 身份运行时,不会提供给 ssh 服务器。作为比较:user
ubuntu
直接形式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
仍然不起作用。
我该如何实现这一点?我需要代表用户执行来自用户的ssh
命令。git
ubuntu
user
答案1
除了添加到 之外Defaults env_keep+=SSH_AUTH_SOCK
,sudoers
您还需要授予user
对 SSH_AUTH_SOCK 变量指向的文件的访问权限。默认情况下不启用它。