bashスクリプトでyesと答えます


24

git clonebashスクリプトを実行しようとしていますが、スクリプトを初めて実行したときにサーバーがまだわからない場合、スクリプトは失敗します。私はこのようなものを持っています:

yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

しかし、それはを無視していyesます。git clone既知のホストにキーを強制的に追加する方法を知っていますか?


どうecho yes | git clone git@github.com:repo/repoo.git
asfallows

3
@asfallows、@Rafael:echo yes良いアプローチではありません。コマンドを2回目に実行しても、サーバーキーが既にわかっているため、sshは続行するかどうかを尋ねません。
ジル 'SO-悪

回答:


21

以下を~/.ssh/configファイルに追加します。

Host github.com
    StrictHostKeyChecking no

open-sshクライアントを使用して(gitクライアントが実行する)リモートシェルを確立するものはすべて、github.comへのキーチェックをスキップする必要があります。

これは、チェックをスキップする任意の形式(最初に自動的に[はい]を押すか、チェックをスキップするか)が、セキュリティの妥協点にいる男性のためのスペースを作成するため、実際には悪い考えです。より良い方法は、指紋を取得して検証し、known_hosts自動的に接続するスクリプトを実行する前にファイルに保存することです。


2
指紋known_hosts取得して検証し、前にファイルに保存することを強く好みます
ジル 'SO-悪

1
あなたの答えをありがとう、私はknown_hostsに指紋を追加するというアプローチをとった。より安全なようです:)
ラファエル

ああ、私はこれを行うためにパペットを使用しています。誰かがそれを使用することに興味があるなら、ここにレシピがあります:gist.github.com/1155725-
ラファエル

5

yes出力y。RSAキーの受け入れのニーズyes。の代わりにyes yes | git clone git@github.com:repo/repoo.gitそのようなyes出力yesを試すことができyます。


5
何らかの理由で、それはgit cloneでは機能しませんでした。
マットV。11年

どちらもうまくいきませんでした。また、echo "yes" | ...しません。gitパイピングは受け入れないと思います。たぶん一部のバージョンでのみですか?
うどんだん

3

ssh-keyscan -H github.com >> ~/.ssh/known_hostsクローンを作成する前に実行すると、キーが追加され、プロンプトが表示されなくなります。

もちろん、このアプローチはMITM攻撃に対しても脆弱です。


1

以前にこの問題に遭遇しました。Windowsマシン上ではありましたが、リモートホストに接続するにはsshを使用する必要がありました。キーを認識しないため、最初の接続が常に失敗するという同じ問題に遭遇しました。

手動で接続し、レジストリキーを見つけて、スクリプトの最初にインポートすることで解決しました。Linuxでは、同じ一般的な考え方が必要です。このサーバーを信頼できるホストのリストに追加して、sshが毎回彼を信頼するかどうかを尋ねないようにします。

手動で接続したら、キーファイルを見つけて、known_hostsファイルに追加します。この方法でsshはそのファイルを調べ、あなたが何をしているかを知っていると仮定し、指紋について尋ねることなく続行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.