将公钥添加到远程服务器的授权密钥并执行一些命令

将公钥添加到远程服务器的授权密钥并执行一些命令

该命令本身有效:

ssh user@remote 'cat >>/home/user/somedir/.ssh/authorized_keys' <~/.ssh/id_rsa.pub

所以我尝试将其合并到我的脚本中:

#! /bin/bash

ssh user@remote 'cat >>/home/user/somedir/.ssh/authorized_keys' <~/.ssh/id_rsa.pub << EOF
    touch hello
    mkdir /test/morning
    cp hello /test/morning
EOF 

目的是将 myid_rsa.pub从本地计算机复制到authorized_keys远程主机的文件,然后执行一些其他命令,但使用上面脚本的命令将回显到文件中authorized_keys,如下所示:

$ cat /home/user/somedir/.ssh/authorized_keys 
    touch hello
    mkdir /test/morning
    cp hello /test/morning
EOF 

有人可以帮忙吗?

答案1

我猜你正在寻找,

cat ~/.ssh/id_rsa.pub | ssh user@remote "mkdir /home/user/somedir/.ssh; \
cat >> /home/user/somedir/.ssh/authorized_keys; touch hello; mkdir /test/morning; \
cp hello /test/morning"

我更喜欢使用ssh-copy-id.您只需给它远程地址,它就会将您的公钥添加到authorized_keys远程计算机上的文件中:

$ ssh-copy-id user@remote

答案2

这里的文档重定向您运行的命令的标准输入(ssh在本例中)。重定向也是如此< file。重定向是从左到右处理的,所以最后的重定向生效。因此 cat在远程运行并从此处文档获取输入。

尝试用类似的东西

echo file > sourcefile
cat <<EOF <sourcefile 
here doc
EOF

然后以相反的顺序与重定向进行比较。

相关内容