これに似た質問に対する答えはたくさんありますが、明確な答えのあるものを見つけることができないようです。それらはすべて、公開鍵を少なくとも1回取得するか、鍵を完全に無視するか、known_hostsファイルに直接書き込みます(ハッシュなしを意味します)。
サーバーのフィンガープリントや公開鍵を持っています。シェルコマンドでクライアントのknown_hosts
ファイルに追加したいのですが。これは、構成されているものを使用する必要があります(ハッシュ/ハッシュなし)
また、スクリプトはこのサーバーからgit pullを実行するため、この時点でポート情報を提供することが適切かどうかはわかりません。 そうであるかどうか教えてください。
ありがとう。そして、これがすでに答えられていて、どういうわけかそれを逃した場合は、私を正しい方向に向けてください。
PS-追加情報:ポートについて質問する理由の1つは、次のことを行っても成功しなかったためです(これは、ホストからキーを取得しているので、やりたくないことはわかっています)。
ssh-keygen -R my.awesome.Host # hostname
ssh-keygen -R 1.2.3.4 # IP
ssh-keygen -R my.awesome.Host,1.2.3.4
ssh-keyscan -H my.awesome.Host,1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H 1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H my.awesome.Host >> ~/.ssh/known_hosts
しかし、(sshを介して)クローンをgitすると、次のような音がします。
The authenticity of Host '[my.awesome.Host]:7999 ([1.2.3.4]:7999)' can't be established.
RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on
Are you sure you want to continue connecting (yes/no)?
それでも、ssh [email protected]
は指紋について私にプロンプトを表示しません。
公開鍵があれば、鍵をknown_hosts
ファイルに書き込むだけで、必要に応じて再ハッシュすることができます。
HOSTNAME=my.awesome.Host
PORT=7999
PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E"
KNOWN_HOSTS="~/.ssh/known_hosts"
echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNOWN_HOSTS
# re-hash, if needed:
ssh -G -p $PORT $HOSTNAME | grep "hashknownhosts yes" && \
ssh-keygen -H -f $KNOWN_HOSTS
ssh
の-G
スイッチはかなり新しいものです。それが機能しない場合は、既知のホストを別の方法でハッシュするかどうかを決定する必要があります(または条件に関係なく実行します)。
すでにハッシュされたホストでファイルをハッシュしても、これらの行には影響しません。
上記のスクリプトは試していませんが、そこからポイントを得ることができるはずです(タイプミスがある場合は修正してください)。