ssh接続先でローカルmacのkeyを使ってgit cloneとかしたい

個人サーバにgitリポジトリを置いていて、他のサーバは、その個人サーバからgit cloneとかgit pullしてファイルを設置している。
ローカルからcapistranoを使ってサーバにdeployする時はssh-agentでローカルPCの秘密鍵を使っていたんだけど、サーバ上でgit cloneしようと思ったら、どうすりゃ良いんだと調べてみた。

1. ssh接続時にオプション追加

ssh -A 〜

「-A」を付ける。
これを付けると、接続先サーバの/tmp以下にソケットファイル?が作られて、そのファイルへのパスが格納されたSSH_AUTH_SOCKという環境変数も作られる。

2. sudoで環境変数を渡せるようにする

sudo visudo

ssh-login-user      ALL=(ALL)       NOPASSWD:SETENV:/usr/bin/git

この「SETENV」というのを付ける。

3. sudoする時に「-E」を付ける

sudo -E git clone http://〜

これで、SSH_AUTH_SOCKという環境変数がrootユーザに渡せる

4. ハマったこと

3のsudoに-Eを付けて実行する際、rootではなく一般ユーザを対象にすると、permission deniedで怒られる。
ssh接続時に作成される/tmp以下のソケットファイル?へのアクセス権が無いから。

まとめ

出来て良かった。

コメント

タイトルとURLをコピーしました