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
そのディレクトリのみが存在する場合、エラーは生成されません。 - この演算子を使用すると、
&&
前の操作がエラーなしで終了した場合にのみ、次の操作が実行されます。cat
mkdir
- 最後は
cat >> ~/.ssh/authorized_keys
電話してcat
ファイルなし。~/.ssh/authorized_keys
リダイレクト演算子()によって、対応する出力が(可能な場合)ファイルに追加されます>>
。
- ディレクトリが作成され、
メモ:
ssh-copy-id
多くのシステムには、ローカルキーをリモートシステムにコピーするコマンドがあります。より多くの情報が必要な場合は入力してくださいman ssh-copy-id
ssh-copy-id - ローカルで利用可能なキーを使用してリモートシステムでログインを認証します。
コメントでroyalmaが述べたように、rawコマンドラインは設定された
ssh
(制限された)設定に従って機能することも、動作しないこともあります。