连接到 Linux 服务器并复制文件时将用户更改为 root

连接到 Linux 服务器并复制文件时将用户更改为 root

我的脚本的编码方式不允许您直接通过 root 连接到服务器。这段代码基本上将服务器上的文件复制到我的计算机上,它可以工作,但我无法访问许多文件,因为只有 root 可以访问它们。如何以用户身份连接到服务器,然后通过切换到 root 来复制其文件?

我要更改的代码:

sshpass -p "password" scp -q -r [email protected]:some_directory copy_it/here/

换句话说,我希望能够远程复制只能由远程服务器上的 root 访问的文件,但不希望以 root 身份直接通过 ssh/scp 访问远程服务器。

是否可以仅通过 ssh 而不能通过 sshpass?

答案1

你最好用(不是密码)自动远程登录。

如果您想获得 root 访问权限,则需要无密码的“su”,或者更好地配置“sudo”以便能够使用 root 用户执行命令。

然后你可以使用“ssh”(不是scp)登录远程服务器并执行命令。然后您可以使用 tar/lszrz/whatever 来传输文件。

像这样:

ssh remote.server.com sudo tar fc - /path/on/the/remote/server | tar fx -

这应该将 /path/on/the/remote/server 复制到您的当前目录。

编辑:请记住,允许您的用户这样做sudo tar并不安全。

答案2

因此,方法是远程执行命令,通过 sudo 将文件复制到远程计算机上的 /tmp,将其所有者更改为连接的用户,然后从 /tmp 远程复制它们:

 ssh [email protected] "sudo cp -R some_directory /tmp"
 ssh [email protected] "sudo chown -R username:username /tmp/some_directory"
 scp -q -r [email protected]:/tmp/some_directory copy_it/here/ 
 ssh [email protected] "rm -r /tmp/some_directory"

相关内容