パブリック is_rsa.pub を known_hosts に自動的に追加する方法 - 方法は?

パブリック is_rsa.pub を known_hosts に自動的に追加する方法 - 方法は?

サーバーを known_hosts に自動的に追加するにはどうすればよいでしょうか? (安全な方法なので、md5 フィンガープリントは使用しないでください。「自動 yes/accept」ソリューションを送信しないでください。必要な資格情報をサーバーからマシンに持ち込みたいのです)

known_hosts新しいサーバーを受け入れるために、ssh ファイルを自動的に更新したいと思います。

サーバーの公開キー(安全なチャネルから取得)を追加する必要があると思いますid_rsa.pubが、形式が異なります(awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts検証に失敗してこのように追加しようとしました。md5 には欠陥があるため、md5 フィンガープリントは使用したくないことに注意してください)。他にid_rsa.pub便利なものがあれば、サーバー上でコマンドを実行し、信頼できるチャネルを介して結果を取得できます。(ネットワーク チャネルではないことに注意してください(ペンドライブを物理的に別の場所に移動することを考えてください)ので、ssh-keyscan問題は解決しません。さらに、id_rsa.pub はサーバーで実行されていない Dropbear サーバーのキーであるため、サーバーではなくキーを含むファイルのみが使用可能です)

答え1

名前はid_rsa.pubユーザーの公開鍵のように見えます。これは とは何の関係もありません。 known_hosts-known_hostsはホスト鍵を格納します。名前が示すように、ホスト鍵はホスト (つまりコンピュータ) を認証し、ユーザー鍵はユーザーを認証します。OpenSSH のホスト公開鍵は通常、/etcまたはにあり/etc/ssh、 のような名前が付けられますssh_host_rsa_key.pub

Dropbearには秘密鍵を含むファイルが1つあります。公開鍵(DropbearとOpenSSHで互換性のある形式)を抽出するには、次のコマンドを実行します。

dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub

OpenSSH にはファイルを更新するコマンドは付属していないと思いますknown_hosts。手動で行うのは簡単です:

echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts

ホスト名をハッシュ化したい場合(ファイルを読む人がこれらのサーバーの名前を知ることができないようにするためknown_hosts— プライバシーの保護はごくわずかですが)、ssh-keygen -H後で実行します。

関連情報