別のコンピュータのファイルにテキストを書き込む方法

別のコンピュータのファイルにテキストを書き込む方法

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_keysmachine2のファイルに書きたいと思います。 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

関連情報