ssh-keygen -r hostname
はデフォルトの公開鍵を使用すると想定しています。デフォルトは~/.ssh/id_rsa.pub
になると思っていたのですが、そうではないようです。では、は何をしているのでしょうか?
OpenSSHコマンドラインユーティリティでの私の経験では、不足している引数についてユーザーにプロンプトを表示するか、標準のデフォルト値にフォールバックします。しかし、ssh-keygen -r
の場合、これは当てはまらないようです。公開鍵(例:ssh-keygen -r
)を指定せずにssh-keygen -r hostname
コマンドを実行すると、次の出力が得られます。
no keys found.
デフォルトで自分の公開鍵になると思います。 ~/.ssh/id_rsa.pub
。ただし、この公開鍵を明示的に渡すと(ssh-keygen -r hostname -f ~/.ssh/id_rsa.pub
など)、代わりに次の形式の出力が得られるため、これは当てはまらないようです。
hostname IN SSHFP 1 1 5d6c87ef4e8f4f59974f05723ff3dc0cffc9c4b4
hostname IN SSHFP 1 2 8fa151e7f3ba43fa89c240ab236f0313aea1fe9f9e9f4e5b8f084ca0008399ed
さらに、ssh-keygen
のマニュアルページには、ssh-keygen -r
コマンドの次の構文が示されています。
ssh-keygen -r hostname [-f input_keyfile] [-g]
-f input_keyfile
フラグはオプションとして示されているので、ssh-keygen
はエラーメッセージを出力する以外のことをすることを期待します。
したがって、ssh-keygen -r hostname
がデフォルトの公開鍵として~/.ssh/id_rsa.pub
を使用せず、ユーザーに公開鍵の指定を求めない場合、はやってる?デフォルトで他のパスになっていますか?もしそうなら、それはどのような道ですか?
注: macOS High Sierra(Mac OS Xバージョン10.13.6)でOpenSSHバージョン7.6を実行しています。
ssh-keygen -r
は SSHFPレコード を生成します。これは、ホスト名に対応するHostキーを示すために DNSエントリ に入力したものです。これにより、マシンにログインしたい人は、DNSレコードを信頼していると仮定して、どのホストキーが期待されるかを知ることができます(実際には、 [〜#〜] dnssec [〜#〜 ] )。
したがって、当然、ssh-keygen -r
はマシンのホストキーを探します。ユーザーキーには関心がありません。ユーザーキーの読み取りを強制すると機能する可能性がありますが、結果は役に立ちません。 ssh-keygen -r
は/etc/ssh_Host_*_key.pub
、またはSSHサーバーがホストのキーを探すように構成されている場所を調べます。マシンにSSHサーバーが設定されていない場合、SSHFPレコードは使用できないため、ssh-keygen -r
がキーを見つけられなくても問題ありません。