如何将一些文本写入不同机器上的文件中

如何将一些文本写入不同机器上的文件中

我有 2 台机器 machine1 和 machine2。

我想从 machine1 写入一些内容到 machine2 中的文件中。

在同一台机器上,我可以运行sudo cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys将内容写入~/.ssh/id_dsa.pub文件~/.ssh/authorized_keys

但我想将~/.ssh/id_dsa.pubmachine1 的内容写入~/.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 命令捕获本地标准输入,还可以运行外部命令。如果将这两个事实结合起来,那么这将成为可能:

ssh machine2 tee -a "~/.ssh/authorized_keys" < ~/.ssh/id_dsa.pub

还有一个名为“intent”的命令ssh-copy-id可以自动执行此过程。您可以查看man ssh-copy-id更多信息。

相关内容