git clone
sshでリポジトリホストのキーをチェックせずに実行しようとしています。私はそのようにsshからそれを行うことができます:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
同じsshオプションをgit cloneコマンドに渡す方法はありますか?
編集:~/.ssh/config
そのマシンのファイルやその他のファイルを変更できないという制限があります。
git clone
sshでリポジトリホストのキーをチェックせずに実行しようとしています。私はそのようにsshからそれを行うことができます:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
同じsshオプションをgit cloneコマンドに渡す方法はありますか?
編集:~/.ssh/config
そのマシンのファイルやその他のファイルを変更できないという制限があります。
回答:
それらをあなたに追加してください~/.ssh/config
:
Host host
HostName host
User user
SshOption1 Value1
SshOption2 Value2
Host
エントリは、コマンドラインで指定しますものです、そしてHostName
真のホスト名です。同じにするHost
ことも、エントリをエイリアスにすることもできます。このUser
エントリはuser@
、コマンドラインで指定しない場合に使用されます。
コマンドラインでこれを構成する必要がある場合は、GIT_SSH
環境変数を設定して、オプションが含まれているスクリプトを指すようにします。
GIT_SSH
環境変数を使用します。
最近リリースされたgit 2.3は、コマンドWITHパラメーターを定義するために使用できる新しい変数「GIT_SSH_COMMAND」をサポートしています。
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
$GIT_SSH_COMMAND
はに優先し$GIT_SSH
、シェルによって解釈されるため、追加の引数を含めることができます。
git clone
ですか、それともコードは正しいですか?
異なるキーを指定するための別のオプションはgit config core.sshCommand
、git 2.10 +(2016年第3四半期)です。
これは、Borisの回答で説明されている環境変数の代替です)
参照してください3c8ede3コミットにより(2016年6月26日)のグエンタイ・ゴックDuyと(pclouds
)。
(合併によりJunio C浜野- gitster
-でdc21164コミットし、2016年7月19日)
core.sshCommand
リポジトリごとにGIT_SSH_COMMANDが使用する値を指定するために、新しい構成変数が追加されました。
$GIT_ASKPASS
または$GIT_PROXY_COMMAND
と同様に、最初に構成ファイルから読み取り、次ににフォールバックし$GIT_SSH_COMMAND
ます。これは、同じホスト(githubなど)を対象とする異なる秘密鍵を選択するのに役立ちます
core.sshCommand:
この変数が設定され、場合
git fetch
とgit push
するのではなく、指定されたコマンドを使用します。ssh
彼らは、リモート・システムに接続する必要がある場合。
コマンドはGIT_SSH_COMMAND
環境変数と同じ形式であり、環境変数が設定されるとオーバーライドされます。
それは次のgit clone
ことが可能であることを意味します:
cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
# later on
git clone host:repo.git
これをすべてのリポジトリに適用する場合は、user1300959がコメントに追加するので、グローバル構成を使用します。
git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
git clone
このケースでは、あなたがグローバルGitのsshコマンドを設定することもできます。 -git config --global core.sshCommand ...
GIT_SSH変数を使用してssh引数を渡す方法のトリッキーな例を次に示します。
$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone user@host
注:上記の行は、ターミナルに貼り付ける必要があるターミナルコマンドラインです。ファイルsshを作成し、実行可能にして実行します。
秘密鍵オプションを渡したい場合は、どの秘密鍵を使用するかをgitに伝える方法を確認してください。。
$*
と"$@"
仕事に思えます。"$@"
もう1つは非推奨のようなので、通常はを使用します。$*
この場合に好む理由はありますか?
システムレベルの設定に影響を与えないリポジトリレベルの構成
すでに利用可能な回答をまとめて、以下の手順を選択します。これにより、構成変更がマシンレベルではなく、作業中のリポジトリのみに影響を与えることが保証されます。私のケースでは、共有Bambooエージェントでスクリプトを実行する必要があるため、これが必要です。
1. GIT_SSH_COMMAND
アプローチに従ってリポジトリのクローンを作成します。
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://url
2.クローンが作成されたら、リポジトリディレクトリに移動します。
cd repo-dir
3. core.sshCommand
将来のすべての呼び出しが通常のようにgitコマンドで実行できるように構成を設定しますが、提供されたgitオプションを内部的に使用します。
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
core.sshCommand
上で述べたの素晴らしい使い方。賛成。
私はgitをバージョン2.3以上に更新し、使用することGIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
がベットオプションだと思いますが、それが不可能な場合は、@ josh-leeが適切なオプションを提供しますが、ssh設定ファイルをインデントして回答を更新してください。
Host host
HostName host
StrictHostKeyChecking no
UserKnownHostsFile /dev/null