我有 2 台机器 machine1 和 machine2。
我想从 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 命令捕获本地标准输入,还可以运行外部命令。如果将这两个事实结合起来,那么这将成为可能:
ssh machine2 tee -a "~/.ssh/authorized_keys" < ~/.ssh/id_dsa.pub
还有一个名为“intent”的命令ssh-copy-id
可以自动执行此过程。您可以查看man ssh-copy-id
更多信息。