machine1とmachine2という2台のコンピュータがあります。
machine1の内容をmachine2のファイルに書きたいです。
同じコンピュータでファイルsudo cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
に記録されたコンテンツを実行できます。~/.ssh/id_dsa.pub
~/.ssh/authorized_keys
~/.ssh/id_dsa.pub
しかし、machine1の内容を~/.ssh/authorized_keys
machine2のファイルに書きたいと思います。 sshで接続してできます。これは、ユーザー名とパスワードを使用してシングルコマンドでサイレントモードでhadoopをインストールしたためです。
scp
ファイル全体を交換したくありません。
別のコンピュータのユーザー名/パスワードを提供する単一のコマンドでこれを行うにはどうすればよいですか?
答え1
次のことができます。
cat ~/.ssh/id_dsa.pub | ssh machine2 'cat >> ~/.ssh/authorized_keys'
しかし、おそらくこのツールを使用する必要がありますssh-copy-id
。以下は、この目的のために特別に作成されたツールです。
ssh-copy-id machine2
または
ssh-copy-id id_dsa machine2
答え2
ssh コマンドはローカル標準入力をキャプチャし、外部コマンドを実行することもできます。これら2つの事実を組み合わせると、次のことが可能になります。
ssh machine2 tee -a "~/.ssh/authorized_keys" < ~/.ssh/id_dsa.pub
ssh-copy-id
このプロセスを自動化する「intent」というコマンドもあります。より多くの情報を見ることができますman ssh-copy-id
。