You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以非root用户远程复制主机根目录下的目录?

非root用户远程复制root目录文件的解决办法

以下几种方法可以解决你没有root密钥,但需要复制远程root权限目录的问题:

方法一:通过管道远程打包后直接解压到本地

利用ssh执行远程sudo tar打包,同时把输出通过管道传到本地解压,全程不在远程生成临时打包文件,高效又安全:

ssh user@<host> "sudo tar -czf - /path/to/root/folder" | tar -xzf -

注意:你的远程用户需要有sudo权限,且执行sudo时要么已经缓存了密码,要么配置了免密(后面会说明)。

方法二:临时修改远程目录权限(谨慎使用)

如果允许的话,先临时给目标目录开放其他用户的读权限,复制完成后再恢复:

# 临时添加读权限
ssh user@<host> "sudo chmod -R o+r /path/to/root/folder"
# 复制目录到本地
scp -r user@<host>:/path/to/root/folder .
# 恢复原权限
ssh user@<host> "sudo chmod -R o-r /path/to/root/folder"

⚠️ 这个方法要注意,复制完成后一定要及时改回权限,避免敏感文件暴露。

方法三:用rsync配合sudo实现增量复制

如果需要复制大文件或者后续要增量同步,rsync是更好的选择,同样通过远程sudo执行:

# 管道直接传输,无需临时文件
ssh user@<host> "sudo rsync -avz /path/to/root/folder -" | rsync -avz - ./local_target_folder

或者先在远程临时复制一份到用户可访问的目录,再同步:

ssh user@<host> "sudo cp -r /path/to/root/folder /tmp/temp_copy && sudo chown -R user:user /tmp/temp_copy"
rsync -avz user@<host>:/tmp/temp_copy .
ssh user@<host> "sudo rm -rf /tmp/temp_copy"

方法四:配置远程sudo免密(适合频繁操作)

如果经常需要执行这类操作,可以让远程服务器的sudoers配置允许你的用户免密执行tar、rsync等命令:

  1. 远程登录后执行sudo visudo编辑配置
  2. 添加一行:
user ALL=(ALL) NOPASSWD: /bin/tar, /usr/bin/rsync
  1. 保存退出后,后续执行远程sudo相关命令就不用输密码了。

内容的提问来源于stack exchange,提问作者DISCO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:45:30