如何使用 scp 将本地文件复制到远程服务器(远程服务器需要 root 访问权限)?

如何使用 scp 将本地文件复制到远程服务器(远程服务器需要 root 访问权限)?

我正在连接到一个服务器(ssh user@server),我需要以用户身份执行以下操作root

dzdo su -

没有su -它我就无法复制该服务器上的任何文件并且只能进行只读访问。

现在,我想将本地文件夹复制到此远程服务器。这是我在本地bash终端中尝试的操作,正如预期的那样,它给了我一个没有权限错误(如下):

知道我应该在这里做什么吗?

从本地目录复制到远程服务器:

(base) Username@Local_Computer lsp % scp -r /Users/Username/Downloads/lsp  username@server:/srv/path/directory

我收到错误:

scp: /srv/path/directory: Permission denied`

答案1

我将在本地机器上执行以下操作:

% cd /Users/Username/Downloads/
% tar -cvf - lsp | ssh username@server 'dzdo tar -C /srv/path/directory -xvf -'

或者

% cd /Users/Username/Downloads/
% tar -cvf - lsp | ssh username@server 'dzdo sudo su - -c "tar -C /srv/path/directory -xvf -"'

此命令序列将tar本地文件并将输出发送tar标准输出。的第二个参数中给出的命令序列将在远程服务器上以权限ssh运行第二个命令,该命令将提取来自的文件tardzdo标准输入-C到命令参数中指定的目录tar

请注意,tar命令还会将所有权和文件权限信息从本地系统复制到远程服务器。例如,如果本地系统上文件所有者的用户 ID 和组 ID 分别为 1000 和 1000,文件权限为 ,则远程服务器上将-rw-r--r--使用相同的用户、组 ID 和文件权限。但是,该用户和组 ID 可能属于其他远程服务器上的用户或组。 中有选项tar可以更改此设置。请参阅选项:、、、、--group=等。--owner=--no-same-owner--no-same-permissions

相关内容