サーバーを 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
後で実行します。