ちょっと変わった状況かもしれませんが、ローカルコンピュータからシェル(git)コマンドを実行する際に使用するプライベートSSHキーを指定したいのです。
基本的にはこんな感じです。
git clone [email protected]:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
あるいは、(Rubyでは)もっと良い。
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone [email protected]:TheUser/TheProject.git")
end
指定した秘密鍵を使ってNet::SSHでリモートサーバに接続する例を見たことがありますが、これはローカルのコマンドです。可能でしょうか?
以下のような方法があります(orip氏による提案)。
ssh-agent bash -c 'ssh-add /somewhere/yourkey; git clone [email protected]:user/project.git'
もしサブシェルがお好みなら、以下のようにしてみてはいかがでしょうか(より壊れやすくなりますが)。
ssh-agent $(ssh-add /somewhere/yourkey; git clone [email protected]:user/project.git)
Git は SSH を起動します。SSH は環境変数でエージェントを見つけ、そのエージェントは鍵を読み込みます。
ただし、.ssh
ディレクトリだけを含むディレクトリを HOME
として設定したい場合は、HOME
を設定してもかまいません。このディレクトリには identity.pub や IdentityFile を設定した config file を置くことができます。