web-dev-qa-db-ja.com

公開鍵が指定されていない場合、 `ssh-keygen -r`は何をしますか?

短い質問

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を実行しています。

2
igal

ssh-keygen -rSSHFPレコード を生成します。これは、ホスト名に対応するHostキーを示すために DNSエントリ に入力したものです。これにより、マシンにログインしたい人は、DNSレコードを信頼していると仮定して、どのホストキーが期待されるかを知ることができます(実際には、 [〜#〜] dnssec [〜#〜 ] )。

したがって、当然、ssh-keygen -rはマシンのホストキーを探します。ユーザーキーには関心がありません。ユーザーキーの読み取りを強制すると機能する可能性がありますが、結果は役に立ちません。 ssh-keygen -r/etc/ssh_Host_*_key.pub、またはSSHサーバーがホストのキーを探すように構成されている場所を調べます。マシンにSSHサーバーが設定されていない場合、SSHFPレコードは使用できないため、ssh-keygen -rがキーを見つけられなくても問題ありません。