该命令本身有效:
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
然后以相反的顺序与重定向进行比较。