Nei*_*eil 103 security sudo command-line scp
我在服务器 A 上有一个文件(它位于 NAT 后面,因此不能直接寻址)。该文件需要复制到服务器 B 中限制为 root 的目录中。我在服务器 B 上有一个具有 sudo 权限的帐户。scp 命令的语法是什么?
Joh*_*han 86
首先,您需要将文件复制到您可以在没有 sudo 的情况下进行写访问的地方,
scp yourfile serverb:
Run Code Online (Sandbox Code Playgroud)
然后使用 sudo 移动文件
ssh serverb sudo mv yourfile /path/to/the/destination
Run Code Online (Sandbox Code Playgroud)
如果您没有可写的地方,请为您的用户创建一个具有写权限的临时目录。
ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
scp yourfile serverb:tempdir
ssh serverb mv tempdir/yourfile /path/to/the/destination
Run Code Online (Sandbox Code Playgroud)
小智 82
使用 SCP,您必须分两步完成,但是,您可以使用 rsync 合而为一,如下所示:
rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root
Run Code Online (Sandbox Code Playgroud)
注意:这确实需要NOPASSWDsudo 配置。如果必须输入 sudo 的密码,则需要两步方式。
要复制目录,您需要添加-r参数。而-v对于详细的输出。
要将上述方法与凭据一起使用,您需要将它们添加到您的~/.ssh/config文件中,例如
Host SERVER2
HostName server2.example.colm
User USER
#IdentityFile ~/.ssh/custom_key.pem
Run Code Online (Sandbox Code Playgroud)
blu*_*yed 20
您可以使用 ssh 和 tar 来解决此问题:
ssh -t host 'sudo -v'
ssh -C host 'cd /; sudo tar cf - path/to/file/or/dir' | tar xpsf - --preserve
Run Code Online (Sandbox Code Playgroud)
这首先更新您的 sudo 时间戳(必要时要求输入密码,这需要 tty ( ssh -t)),然后使用 sudo 远程创建一个 tarball 并在本地提取它。
RedHat 5 上的“tar”需要在“xpsf -”命令之后加上“--preserve”选项。
小智 5
您可以将 sftp 与 sudo 命令一起使用,例如:
sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
178281 次 |
| 最近记录: |