Bash 使用根帐户但在不同用户下在多台服务器上推送公钥

Bash 使用根帐户但在不同用户下在多台服务器上推送公钥,bash,public-key,Bash,Public Key,我试图使用root帐户在一大堆服务器上推送一些公钥,但我想把这些新密钥放在“postgres”用户下 我正在这样做: $ cat new_dba_keys.pub | ssh -l root 10.224.1.16 "su - postgres |cat >> ~/.ssh/authorized_keys" -bash: line 2: ssh-rsa: command not found -bash: line 4: ssh-rsa: command not found 如您所见

我试图使用root帐户在一大堆服务器上推送一些公钥,但我想把这些新密钥放在“postgres”用户下

我正在这样做:

$ cat new_dba_keys.pub | ssh -l root 10.224.1.16 "su - postgres |cat >> ~/.ssh/authorized_keys"
-bash: line 2: ssh-rsa: command not found
-bash: line 4: ssh-rsa: command not found

如您所见,它将不起作用。

您可以使用
su-postgres-c“cat…”代替
su-postgres | cat…
,并将文本放在postgres的目录中:

cat new_dba_keys.pub | ssh -l root 10.224.1.16 "su - postgres -c \"cat >> ~/.ssh/authorized_keys\""

努普。那不行-bash:| cat:没有这样的文件或目录事实上,您从第2行和第4行获得错误消息
-bash:line 2:ssh rsa:command not found
,而file.pub应该只有一行。你检查过这个文件了吗,看它是否有额外的内容?这个文件很好,伙计,我同时已经把它修好了。实际上,它们被推到了/root/.ssh/authorized_keys:((我希望它们在postgres userEdit下生成。而不是
su-postgres | cat…
你可以使用
su-postgres-c“cat…”
并将文本放在postgre的目录中。哈哈,这是一个团队工作!我编辑了第一个答案,所以它看起来就是一个好答案。