如何在没有特权的情况下将文件复制到远程服务器?

问题描述 投票:0回答:1

[当我需要使用具有足够特权的用户通过SSH将文件从本地服务器(服务器A)复制到远程服务器(服务器B)时,我会像下面这样成功完成此操作

localpath='/this/is/local/path/file1.txt'
remotepath='/this/is/remote/path/'
mypass='MyPassword123'

sshpass -p $mypass scp username@hostname:$localpath $remotepath

现在,我必须使用没有足够特权复制的用户将文件从服务器A传输到服务器C。然后一次我已连接到服务器C,因此需要发送su,以便能够发送诸如cdls等的命令。

手动,我通过SSH这样访问服务器C:

[root@ServerA ~]# ssh username@hostname
You are trying to access a restricted zone. Only Authorized Users allowed.
Password: 
Last login: Sat Jun 13 10:17:40 2020 from XXX.XXX.XXX.XXX

ServerC ~ $ 
ServerC ~ $ su
Password:
ServerC /home/myuser # 
ServerC /home/myuser # cd /documents/backups/
ServerC /documents/backups # 

目前myuser具有超级用户权限,我可以发送命令。

然后,如何在连接到服务器C后自动执行将文件从服务器A复制到服务器C并需要发送su的任务?

到目前为止,我已经尝试过这样做:

sshpass -p $mypass ssh -t username@hostname "su -c \"cd /documents/backups/ && ls\""

它要求输入su的密码,并且能够发送cdls,但是使用此命令,我没有将文件从服务器A复制到服务器C,只是半自动访问服务器C并在服务器C中发送su

预先感谢您的帮助。

[当我需要使用具有足够特权的用户通过SSH将文件从本地服务器(服务器A)复制到远程服务器(服务器B)时,我会成功执行此操作,例如localpath ='/ this / is / local / path / file1 ....

unix ssh scp
1个回答
0
投票

由于您具有服务器C上su的权限,因此,请首先将自己添加到服务器C的/etc/sudoers中。如有必要,安装sudosudosu的优势在于它可以接受密码而无需提示。

然后,您可以使用tar和管道,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.