web-dev-qa-db-ja.com

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

git clone bashスクリプトを使用していますが、スクリプトとサーバーを初めて実行したときはまだわかりませんが、スクリプトは失敗します。私はこのようなものを持っています:

yes | git clone [email protected]: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既知のホストにキーを追加するには?

25
Rafael

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

Host github.com
    StrictHostKeyChecking no

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

これは実際には悪い考えです。チェックをスキップすると(自動的に「yes」を押すか、最初にチェックをスキップするかに関係なく)、中間のセキュリティ侵害の男の余地が生じるためです。より良い方法は、フィンガープリントを取得して検証し、それをknown_hostsファイルに保存してから、自動的に接続するスクリプトを実行することです。

22
Caleb

yesyを出力します。 RSAキーの受け入れにはyesが必要です。あなたは試すことができますyes yes | git clone [email protected]:repo/repoo.git so yesyesではなくyを出力します。

5
jfg956

ランニング ssh-keyscan -H github.com >> ~/.ssh/known_hosts複製の前にキーを追加し、プロンプトが表示されないようにします。

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

4
Kevin Smyth

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

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

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

1
n0pe