サーバ管理をしていて、root権限が必要なディレクトリに、ファイルをリポジトリからgit cloneしてきたい状況になったので、方法をメモしておきます。 まず状況の確認として、
- gitのプロトコルにはsshを使っている
- リポジトリサーバには、rootユーザでは鍵認証でもパスワード認証でもログインできない
- リポジトリサーバ、clone先のサーバ双方ともfooというローカルユーザが存在。sshでリモートログインできる
という感じです。ユーザ権限でアクセス出来る場所にgit cloneする場合であれば、
1 foo% git clone ssh://git.repos.com/ path/to/re po.git
こんな感じで済むのですが、ファイルの作成にroot権限が必要な場合、 repoディレクトリを作成出来なくて怒られます。 かといって、rootユーザでgit cloneしようとしても、リポジトリサーバにはrootではログイン出来ないのでcloneできません。
そのような場合には、以下の手順を踏みます。
- clone先のサーバに ssh -A foo@target.ser
ver.com でエージェントフォワードしてログイン。 - ssh -A root@localhost でエージェントフォワードした状態でlocalhostにrootユーザでログイン(ターゲットサーバ上での、ローカルからのrootによるssh接続は許可する必要がある)
- git clone ssh://foo@git.repos.
com/path/t o/repo.git でclone
これでroot権限が必要な場所にfooユーザのSSHエージェントを介してリポジトリサーバに接続し、cloneできます。
注意
安全にエージェントフォワーディングを行う事が出来るのは、 接続先および踏み台にするのサーバ群の管理者たちが全て信頼できる場合に限られます。
posted by
genki
on Tue 10 Mar 2009
at 02:34