ホスト名リストを使用して.ssh/known_hostsの暗号化されたホスト名を復号化するには?

ホスト名リストを使用して.ssh/known_hostsの暗号化されたホスト名を復号化するには?

スクリプトを見つけようとしています。復号(ハッシュされない) Known_hosts ファイルの SSH ホスト名ホスト名のリストを渡すことで

だからまさに反対:

ssh-keygen -H -f known_hosts

または、SSH の設定 HashKnownHosts が No に設定されている場合は、次の手順を実行します。

ssh-keygen -R know-host.com -f known_hosts
ssh-keyscan -H know-host.com >> known_hosts

ただし、ホストキーを再ダウンロードする必要はありません(ssh-keyscanのため)。

それは次のとおりです。

ssh-keygen --decrypt -f known_hosts --hostnames hostnames.txt

ここで、hostnames.txt にはホスト名のリストが含まれています。

答え1

の行はknown_hosts暗号化されずにハッシュされます。暗号化されていないため復号できません。あなたはそれらを「ハッシュ解除」することはできません。ハッシュそれがすべてです。ハッシュが与えられると、元の文字列を見つけることは不可能です。 「ハッシュを解放」する唯一の方法は、元の文字列を推測して推測を確認することです。

ホスト名のリストがある場合は、それを渡してssh-keygen -Fホスト名に置き換えることができます。

while read host comment; do
  found=$(ssh-keygen -F "$host" | grep -v '^#' | sed "s/^[^ ]*/$host/")
  if [ -n "$found" ]; then
    ssh-keygen -R "$host"
    echo "$found" >>~/.ssh/known_hosts
  fi
done <hostnames.txt

1実用的な意味では、今日存在するすべてのコンピュータは、この作業を完了するのに現在の宇宙時代よりも長い時間がかかります。

答え2

ssh-keygen(1) のマニュアルページはこの-F hostnameオプションを示しています:

Known_hostsファイルで指定されたホスト名を検索して、見つかった一致を一覧表示します。このオプションは、ハッシュされたホスト名またはアドレスを見つけるのに役立ちます。見つかったキーをハッシュ-H形式で印刷するオプションと一緒に使用することもできます。

これがあなたが望むようです。

答え3

私はこの新しい暗号化されたファイルが単に既知のホストを管理していることを発見しました。テキストをコピーして別の場所に貼り付け、暗号化されたKnown_hosts行の上にIPとデバイスの説明を追加します。復号化しようとしても必要な情報を取得できません。

関連情報