在 ssh 上实现 ssh-agent 转发时遇到问题,然后 su

在 ssh 上实现 ssh-agent 转发时遇到问题,然后 su

我有一台 Web 服务器,其中有一位专用的非特权用户,他在机器上运行 apache 实例。Web 服务器运行的应用程序的 php 代码位于私有 github 存储库中,我偶尔需要使用 git pull 来更新。

我希望使用我的个人凭证(我的本地 id_rsa 密钥)进行拉取,但出于安全原因,我已将该框设置为只能通过具有 sudo 访问权限的第二个非 root 帐户访问该框,然后sudo -iu username进入 Web 服务器用户。

我尝试启用 ssh-agent 转发,甚至让 sudo 保留 SSH_AUTH_SOCK 环境变量,但 auth sock 文件的权限错误(对于我 ssh 登录的用户,权限为 700)。

我已经验证密钥确实已添加到代理中,并且可以从第一个用户那里访问它。我尝试ssh-add -L从 Web 服务器用户那里访问,并收到一条响应,说它无法连接到 ssh-agent。我怀疑这是因为权限错误。

有没有办法以自动方式改变权限?

或者我的做法是错误的?

答案1

我在 Gentoo 机器上遇到了同样的问题,我只能以普通用户身份登录,但需要对 root 帐户使用代理转发。来自man su

‘-m’

‘-p’

'--preserve-environment' 不更改环境变量 HOME、USER、LOGNAME 或 SHELL。运行环境变量 SHELL 中给出的 shell,而不是用户密码条目中的 shell,除非运行 su 的用户不是超级用户,并且用户的 shell 受到限制。受限 shell 是未在文件 /etc/shells 中列出的 shell,如果该文件不存在,则未在编译列表中列出的 shell。此选项的部分功能可以通过 --login 和 --shell 覆盖。

所以

su -m -

保留了$SSH_AUTH_SOCK环境变量并给了我想要的结果。

相关内容