BashスクリプトでYesと答える

BashスクリプトでYesと答える

Bashスクリプトを介して何かをしようとしていますが、git clone最初にスクリプトを実行しましたが、サーバーがわからない場合はスクリプトが失敗します。私は次のようなものがあります:

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

答え1

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

Host github.com
    StrictHostKeyChecking no

リモートシェルを設定するためにopen-sshクライアントを使用するすべての操作(gitクライアントを使用)は、github.comのキーチェックをスキップする必要があります。

確認をスキップするすべての形式(自動的に「はい」をクリックするか最初に確認をスキップするか)は、中間者によるセキュリティ上の損傷の余地があるため、これは実際に悪い考えです。より良いアプローチは、known_hosts自動接続スクリプトを実行する前に指紋を検索して確認し、ファイルに保存することです。

答え2

yes出力y。 RSA鍵の承認が必要ですyes。代わりにこのように出力してみることができます。yes yes | git clone [email protected]:repo/repoo.gityesyesy

答え3

複製前に実行すると、ssh-keyscan -H github.com >> ~/.ssh/known_hostsキーが追加され、プロンプトは表示されません。

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

答え4

私は前にこの問題を経験しました。 Windowsシステムでは、リモートホストに接続するためにSSHを使用する必要があります。私たちも同じ問題がありました。最初の接続はキーを認識しなかったため、常に失敗しました。

レジストリキーを手動でリンクして検索し、スクリプトの先頭から取得してこの問題を解決しました。 Linuxでも一般的な考えは同じでなければなりません。このサーバーを信頼できるホストのリストに追加して、sshが信頼できるかどうかを毎回尋ねないようにします。

手動で接続したら、キーファイルを見つけてKnown_hostsファイルに追加します。このように、sshはファイルを見て、ユーザーが何をしているのかを知っていると仮定し、指紋を求めずに続行します。

関連情報