我的脚本的编码方式不允许您直接通过 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"