git
かなり珍しい状況かもしれませんが、ローカル コンピューターからshell() コマンドを実行するときに使用するプライベート 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
が、これはローカル コマンドです。これは可能ですか?
ベストアンサー1
これらの解決策はどれも私には効果がありませんでした。
代わりに、@Martin v. Löwis が言及したconfig
SSH 用のファイルの設定について詳しく説明します。
SSH はユーザーの~/.ssh/config
ファイルを探します。私は次のように設定しました:
Host gitserv
Hostname remote.server.com
IdentityFile ~/.ssh/id_rsa.github
IdentitiesOnly yes # see NOTES below
AddKeysToAgent yes
そして、リモート Git リポジトリを追加します。
git remote add origin git@gitserv:myrepo.git
(または、アドレスを使用してリポジトリの新しいコピーをクローンしますgit@gitserv:myrepo.git
)
そして、git コマンドは正常に動作するようになりました。
git push -v origin master
サブモジュールがある場合は、リポジトリ ディレクトリで次のコマンドを実行して、サブモジュールに同じキーを使用するように強制することもできます。
git config url.git@gitserv:.insteadOf https://remote.server.com
ノート
は
IdentitiesOnly yes
、SSHのデフォルトの動作を防ぐ各プロトコルのデフォルトのファイル名に一致する ID ファイルを送信します。その名前のファイルがある場合は、このオプションなしで、~/.ssh/id_rsa
そのファイルより前に試行されます。~/.ssh/id_rsa.github
AddKeysToAgent yes
毎回キーのパスフレーズを再入力する必要がなくなります。毎回
User git
書き込まないように追加することもできます。git@
参考文献