「ssh-keygen -lf -」コマンドの「-」はどのように機能しますか?

「ssh-keygen -lf -」コマンドの「-」はどのように機能しますか?

この質問を読んだ。

次のコマンドは回答とソリューションに表示されます(デモ用にここで調整されています)。

ssh-keyscan 192.168.1.X | ssh-keygen -lf -

public keysIsolateの最初のコマンドがホストを表示していることを知っています。完全なコマンド(つまり、両方の部分)を実行すると、最終出力に基づいて最初のコマンドの公開鍵を使用して生成されます。指紋彼ら自身。

質問

  • コマンドでどのように-機能しますかssh-keygen -lf -

これは必須です。l私はそれがショー用であることを知っています指紋ファイル名を定義しますが、fどのように解釈しますか-

答え1

デフォルトでは、指紋を生成ssh-keygen -lしたい公開鍵ファイルを対話的に求めるメッセージが表示されます。-f既存のファイルのパス名を指定できます。

パス名が-(ダッシュ)の場合、ファイルではなく標準入力から入力を読み込みます。

これは、他の多くのコマンド、特に標準入力での読み取りがcat続く一般的な慣行です。cat -

パイプラインでは、標準入力からのデータはコマンドによって提供されますssh-keyscan。このssh-keyscanコマンドは、上のホストの公開鍵を抽出してに渡しますssh-keygen -lssh-keygenユーティリティは指紋を出力します。

いいえ -f -、ユーティリティは出力をファイル名としてキーの読み取りをssh-keygen試みます。ssh-keyscan

プログラムの入力がターミナルから来るのか、ターミナルの外側のもの(たとえば、他のコマンドやファイル)から来るのかをプログラムで簡単に判断できるので、これは誤った設計と言えます。だからある意味では、-f - できる不要になります。

関連情報