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
既知のホストにキーを追加するには?
以下を~/.ssh/config
ファイルに追加します。
Host github.com
StrictHostKeyChecking no
Open-sshクライアントを使用してリモートシェルを確立する場合(gitクライアントを使用する場合)は、github.comへのキーチェックをスキップする必要があります。
これは実際には悪い考えです。チェックをスキップすると(自動的に「yes」を押すか、最初にチェックをスキップするかに関係なく)、中間のセキュリティ侵害の男の余地が生じるためです。より良い方法は、フィンガープリントを取得して検証し、それをknown_hosts
ファイルに保存してから、自動的に接続するスクリプトを実行することです。
yes
はy
を出力します。 RSAキーの受け入れにはyes
が必要です。あなたは試すことができますyes yes | git clone [email protected]:repo/repoo.git
so yes
はyes
ではなくy
を出力します。
ランニング ssh-keyscan -H github.com >> ~/.ssh/known_hosts
複製の前にキーを追加し、プロンプトが表示されないようにします。
もちろん、このアプローチはMITM攻撃に対しても脆弱です。
以前この問題に遭遇したことがあります。それはWindowsマシン上でしたが、リモートホストに接続するにはsshを使用する必要がありました。キーを認識しないため、最初の接続は常に失敗するという同じ問題に遭遇しました。
手動で接続してレジストリキーを見つけ、スクリプトの先頭でインポートすることで解決しました。 Linuxの場合も、一般的な考え方は同じです。このサーバーを信頼できるホストのリストに追加して、sshが毎回信頼するかどうか尋ねないようにします。
手動で接続したら、キーファイルを見つけて、known_hostsファイルに追加します。このようにして、sshはそのファイルを調べ、何をしているのかを知っていると仮定して、指紋について尋ねずに続行します。