cat [file..]は他のcatコマンドをパイプします。

cat [file..]は他のcatコマンドをパイプします。
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

誰かが引用がどのように機能するかを説明できますか?

私の知る限り。ディスクから公開鍵を読み取り、それをサーバーに接続し、ディレクトリが存在しない場合はディレクトリを作成し、次に2番目の接続を使用してディスクから読み込みますか?何がつながっていますか?

catコマンドの後にファイルを見るのに慣れているので、混乱しています。

ベストアンサー1

このコマンドはcatファイルをリンクして標準出力に出力します。
ファイルを指定しない、または使用せずに呼び出すと、-標準入力が読み込まれます。
あなたのコマンドは2つの方法で使用されます。

ステップバイステップ:

  • コマンドの最初の部分(cat ~/.ssh/id_rsa.pub)はあなたが理解するものと正確に一致します。つまり、ローカルファイルを ~/.ssh/id_rsa.pub標準出力に出力します。
  • その後、このシンボルは|ローカル標準出力をssh次のコマンドの標準入力()にリダイレクトするために使用されます。
  • このsshコマンドは実際には標準入力をパイピングし、文字列内のコマンドが""リモートシステムで実行されるようにします。
  • 文字列の内部:
    • ディレクトリが作成され、~/.sshこのオプションによって-pそのディレクトリのみが存在する場合、エラーは生成されません。
    • この演算子を使用すると、&&前の操作がエラーなしで終了した場合にのみ、次の操作が実行されます。catmkdir
    • 最後はcat >> ~/.ssh/authorized_keys 電話してcat ファイルなし~/.ssh/authorized_keysリダイレクト演算子()によって、対応する出力が(可能な場合)ファイルに追加されます>>

メモ:

  • ssh-copy-id多くのシステムには、ローカルキーをリモートシステムにコピーするコマンドがあります。より多くの情報が必要な場合は入力してくださいman ssh-copy-id

    ssh-copy-id - ローカルで利用可能なキーを使用してリモートシステムでログインを認証します。

  • コメントでroyalmaが述べたように、rawコマンドラインは設定されたssh(制限された)設定に従って機能することも、動作しないこともあります。

おすすめ記事