如何将公钥附加到远程主机而不是复制它

6 ssh scp key-authentication ssh-keygen

我在我的 bash 脚本中使用了以下 cli ,以便将公钥发送到远程机器

sshpass -p $pass scp  /root/.ssh/authorized_keys root@$remote_host:~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

但是由于我们想附加来自其他主机的公钥,所以我正在搜索方法 top append

在 bash 中,我知道该选项是使用“>>”,但是如何在我的方法中使用附加?

或者其他解决方案?

bla*_*imi 39

您还可以使用ssh-copy-id,这是一种完全按照您的要求执行操作的工具:将一个或多个密钥添加到远程系统的 authorized_keys。

  • 通常是一个好主意(并且应该是首选!),但在这种情况下,如果没有额外的努力,它将无法工作,因为源是另一个“authorized_keys”文件。 (2认同)
  • @pLumo 额外的努力只是`ssh-copy-id` 需要密钥文件名以`.pub` 结尾:`ln -s authorized_keys ~/.ssh/authorized_keys.pub; ssh-copy-id -i ~/.ssh/authorized_keys.pub $remote_host` (2认同)

pLu*_*umo 12

使用ssh连同tee -a file

< /root/.ssh/authorized_keys sshpass -p "$pass" ssh root@"$remote_host" "tee -a ~/.ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)

或者sshcat >> file如果您愿意:

< /root/.ssh/authorized_keys sshpass -p "$pass" ssh root@"$remote_host" "cat >> ~/.ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)

双方teecat会从标准输入,被发送到阅读ssh< file
不同之处在于tee,不同的是>>将打印它附加的内容。

注意:需要双引号,否则在将>>or~发送到sshcommand之前,您的 shell 将对其进行解释。

  • 你错过了 `&lt; /root/.ssh/authorized_keys` 部分,这是源代码。它将文件的内容发送到 `ssh` 命令的标准输入。和`tee` 或`cat` 读取。 (2认同)
  • 我想如果您删除`-n`,它应该可以工作。 (2认同)