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.git
yes
yes
y
答え3
複製前に実行すると、ssh-keyscan -H github.com >> ~/.ssh/known_hosts
キーが追加され、プロンプトは表示されません。
もちろん、このアプローチはMITM攻撃にも脆弱です。
答え4
私は前にこの問題を経験しました。 Windowsシステムでは、リモートホストに接続するためにSSHを使用する必要があります。私たちも同じ問題がありました。最初の接続はキーを認識しなかったため、常に失敗しました。
レジストリキーを手動でリンクして検索し、スクリプトの先頭から取得してこの問題を解決しました。 Linuxでも一般的な考えは同じでなければなりません。このサーバーを信頼できるホストのリストに追加して、sshが信頼できるかどうかを毎回尋ねないようにします。
手動で接続したら、キーファイルを見つけてKnown_hostsファイルに追加します。このように、sshはファイルを見て、ユーザーが何をしているのかを知っていると仮定し、指紋を求めずに続行します。