【问题标题】:SSH agent forwarding in VagrantVagrant 中的 SSH 代理转发
【发布时间】:2014-07-14 13:41:07
【问题描述】:

我正在使用 Vagrant 来启动多 VM 环境(VirtualBox Hostonly 模式)。每个 VM 都启用了 ssh 代理转发。 作为“流浪”用户,我可以连接到我的 Bitbucket 帐户并从 VM 中签出存储库。以下是相关的控制台日志:

[vagrant@ci-server ~]$ echo $SSH_AUTH_SOCK 
/tmp/ssh-BtewZz3383/agent.3383

[vagrant@ci-server ~]$ ssh -T git@bitbucket.org
logged in as <my-bitbucket-account>.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
[vagrant@ci-server ~]$

每个 VM 也有一个用户,“go”。当我以“go”身份登录并尝试连接到 Bitbucket 时,它会引发错误。连 SSH_AUTH_SOCK 都没有设置:

[vagrant@ci-server ~]$ sudo su - go

[go@ci-server ~]$ echo $SSH_AUTH_SOCK

[go@ci-server ~]$ ssh -T git@bitbucket.org
Permission denied (publickey).
[go@ci-server ~]$ 

sudoers 文件有:

Defaults    env_keep += "SSH_AUTH_SOCK"

因此,当“vagrant” sudo 进入“go”时,ssh-agent 连接应该被转发。我在这里错过了什么?

主机是 Mac OS X 10.8,而虚拟机是 CentOS 6.5 机器。

谢谢!

【问题讨论】:

  • 您不需要使用vagrant帐户中的密钥文件并确保go帐户中设置了SSH_AUTH_SOCK环境变量吗?
  • 您为什么要这样做?为什么不简单地为 go-account 配置 Bitbucket 部署密钥?这就是我配置 Go CD 服务器的方式。

标签: vagrant ssh-agent


【解决方案1】:

因此,当“vagrant” sudo 进入“go”时,ssh-agent 连接应该被转发。我在这里错过了什么?

您同时使用sudosu -,这是:

  1. 矫枉过正,因为仅sudo 就可以完成这项工作;
  2. 不好,因为su - 会重置您的环境,删除您需要的 SSH_AUTH_SOCK 变量。

尝试仅使用sudo --shell --user=go 作为该用户获取shell。

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 2012-08-10
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2015-07-09
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多