1. ホーム
  2. git

[解決済み] GIT_SSH エラーを使用してカスタム SSH を使用した Git クローン

2022-02-12 02:17:13

質問

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

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

しかし、前のコマンドの後に、次のコマンドを実行すると

git clone [email protected]:uname/test-git-repo.git 次のような奇妙なエラーが表示されます。

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

この問題を解決するために、ご協力をお願いします。

解決方法は?

でオプションを指定することはできません。 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

もう一つの方法は 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 これにより、各リモートに対してデスティネーションごとのスクリプトを作成する必要がなくなるからです。