使用与 ssh 登录不同的用户将 scp 文件发送到服务器

使用与 ssh 登录不同的用户将 scp 文件发送到服务器

我需要将文件somefile.jar从本地计算机(cygwin)复制到远程server.local。我有一个 ssh 登录corpserver.localsudoer 上server.local。我需要将文件放置到/opt/alice/libs/另一个用户拥有的文件夹中:

[[email protected] ~]$ ls -ld /opt/alice/libs
drwxr-xr-x 2 alice alice 12288 Apr 13 11:09 /opt/alice/libs

由于权限不足,我无法将文件直接上传到所选目录。所以,我的复制方法只有几个/tmp/步骤server.local

$ scp ./somefile.jar [email protected]/tmp/
$ ssh [email protected]
Last login: Thu Apr 12 18:05:41 2018 from 192.168.87.34

[[email protected] ~]$ sudo chown alice:alice /tmp/somefile.jar
[[email protected] ~]$ sudo -u alice mv /tmp/somefile.jar /opt/alice/libs/

有没有更短的方法来执行上传?


如果不存在可以实现我的目的的工具,也许可以制作一个*.sh包含所有这些操作的脚本?

答案1

如果您想做一个简单的脚本,假设您的 sudo 不需要密码,您可以通过管道传输数据:

tar cf - ./somefile.jar | 
ssh -t [email protected] sudo -u alice tar xf - -C /opt/alice/libs/

-C解压文件之前更改目录。如果你的 tar 没有这个,请先添加一个显式的cd /opt/alice/libs/

答案2

这很可能是做到这一点的唯一方法。

相关内容