Git でシェルコマンドを実行するときに使用するプライベート SSH キーを指定するにはどうすればよいでしょうか? 質問する

Git でシェルコマンドを実行するときに使用するプライベート SSH キーを指定するにはどうすればよいでしょうか? 質問する

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 が言及したconfigSSH 用のファイルの設定について詳しく説明します。

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 yesSSHのデフォルトの動作を防ぐ各プロトコルのデフォルトのファイル名に一致する ID ファイルを送信します。その名前のファイルがある場合は、このオプションなしで、~/.ssh/id_rsaそのファイルより前に試行されます。~/.ssh/id_rsa.github

  • AddKeysToAgent yes毎回キーのパスフレーズを再入力する必要がなくなります。

  • 毎回User git書き込まないように追加することもできます。git@

参考文献

おすすめ記事