Vagrant を使用してマルチ VM 環境 (VirtualBox Hostonly モード) を起動しています。各 VM で ssh エージェント転送が有効になっています。「vagrant」ユーザーとして、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」が「go」に sudo するときに、ssh-agent 接続が転送されるはずです。ここで何が欠けていますか?
ホストは Mac OS X 10.8 で、VM は CentOS 6.5 ボックスです。
ありがとう!