56

カスタム SSH コマンドを使用して Git リポジトリのクローンを作成しようとしています。GIT_SSH 環境変数に SSH コマンドを設定して実行する

export GIT_SSH="/usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key".

しかし、前のコマンドの後に実行したとき

git clone git@bitbucket.org:uname/test-git-repo.git、次の奇妙なエラーが表示されます

error: cannot run /usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key
fatal: unable to fork

この問題を解決するのを手伝ってくれませんか?

4

5 に答える 5

102

GIT_SSH環境変数にオプションを指定することはできません。gitマニュアルページから:

   GIT_SSH
       If this environment variable is set then git fetch and git push will use this command instead of ssh when they need to connect
       to a remote system. The $GIT_SSH command will be given exactly two arguments: the username@host (or just host) from the URL
       and the shell command to execute on that remote system.

       To pass options to the program that you want to list in GIT_SSH you will need to wrap the program and options into a shell
       script, then set GIT_SSH to refer to the shell script.

1 つのオプションは、適切な構成でスタンザを.ssh/configファイルに追加することです。

Host bitbucket.org
  StrictHostKeyChecking no
  IdentityFile /home/me/my_private_key

もう 1 つのオプションは、GIT_SSH必要な処理を実行するシェル スクリプトを指定することです。たとえば、 に/home/me/bin/bitbucket_ssh次のように入力します。

#!/bin/sh
exec /usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key "$@"

そして、 をポイントGIT_SSH/home/me/bin/bitbucket_sshます。

.ssh/configこれにより、リモートごとに宛先ごとのスクリプトを作成する必要がなくなるため、可能な限り使用することを好みます。

于 2013-01-08T17:47:17.280 に答える
31

git 2.3+ (2015 年第 1 四半期) 以降、最初に試したことが新しい環境変数で機能することに注意してくださいGIT_SSH_COMMAND

Thomas Quinot ( )のコミット 3994276を参照してください。quinot

git_connect: ssh シェル コマンドを設定しますGIT_SSH_COMMAND

GIT_SSH追加のパラメーターを渡す必要がある場合に備えて、ラッパー スクリプトをインストールするのは実際的ではない場合があります。環境変数を使用し
て、コマンド ライン引数を含め、実行するシェル コマンドを指定する別の方法を提供しますGIT_SSH_COMMANDGIT_SSH

PuTTY の plink/tortoiseplink を使用する場合にパラメータを変更するための特別な回路は、 を使用する場合にのみアクティブになりGIT_SSHます。を使用する場合GIT_SSH_COMMAND、基礎となる ssh 実装を呼び出す前に、必要なパラメーターの調整を意図的にユーザーに任せます。

GIT_SSH_COMMAND:

これらの環境変数のいずれかが設定されている場合、' git fetch' と ' ' は、リモート システムに接続する必要があるときにgit push、' ' の代わりに指定されたコマンドを使用します。 コマンドには、正確に 2 つまたは 4 つの引数が与えられます。ssh

  • URL からの' username@host' (または単に ' ' )と、そのリモート システムで実行するシェル コマンド。host-p
  • デフォルトのポートport以外を指定する場合は、URL からの「 」。SSH

$GIT_SSH_COMMANDよりも優先$GIT_SSHされ、シェルによって解釈され、追加の引数を含めることができます。
$GIT_SSH一方、プログラムへのパスのみを指定する必要があります (追加の引数が必要な場合は、ラッパー シェル スクリプトにすることもできます)。

于 2014-12-22T17:44:47.410 に答える
7

ssh エージェントを使用する

ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'
于 2014-05-12T06:52:41.227 に答える
5

次のように、Git コマンドで使用する任意のキーファイルを指定できます。

$ PKEY=~/.ssh/keyfile.pem git clone git@github.com:me/repo.git

またはこれ:

$ git.sh -i ~/.ssh/keyfile.pem clone git@github.com:me/repo.git

ここで同じ質問に答えました: https://stackoverflow.com/a/15596980

詳細はリンク先をご覧ください。

于 2013-03-24T10:12:24.177 に答える