终端远程复制受保护文件至本地:sudo权限与ssh -t异常求助
解决远程受保护文件的终端复制问题
针对你遇到的SCP复制远程受保护文件时的权限和终端交互问题,我给你几个实用的终端方案:
临时转存法:先把受保护文件复制到远程机器上你有权限的临时目录,再正常SCP
这个方法能避开直接sudo SCP的交互问题,步骤如下:# 远程复制文件到临时目录并修改权限为你可访问 ssh your_valid_user@remote_host "sudo cp /path/to/protected/file /tmp/protected_temp && sudo chown your_valid_user:your_valid_user /tmp/protected_temp" # 从远程临时目录复制到本地 scp your_valid_user@remote_host:/tmp/protected_temp /your/local/destination/ # 可选:清理远程临时文件 ssh your_valid_user@remote_host "rm /tmp/protected_temp"SSH管道直读法:通过ssh直接读取远程受保护文件内容,本地写入
用ssh -t强制分配伪终端,配合sudo cat来读取文件,这样应该能正常触发sudo密码提示:ssh -t your_valid_user@remote_host "sudo cat /path/to/protected/file" > /your/local/destination/protected_copy注意:这里一定要用能正常登录远程的用户,你提到pi用户被ssh屏蔽,所以别用pi账号,换其他有权限的管理员用户。
免密码sudo配置法(谨慎使用):如果能修改远程机器的sudo配置,可以给你的用户添加特定命令的免sudo权限,这样就能直接SCP
比如在远程机器上编辑sudoers文件(用visudo命令更安全),添加一行:your_valid_user ALL=(ALL) NOPASSWD: /bin/cat之后就能直接用这条命令复制:
scp your_valid_user@remote_host:"sudo cat /path/to/protected/file" /your/local/destination/这个方法要注意权限风险,尽量只给必要的命令开免密码权限。
另外补充下你提到的ssh被pi屏蔽的问题:确保你全程使用的是未被屏蔽、有权限登录远程的用户,所有操作都基于这个用户来执行,才能正常触发sudo权限。
内容的提问来源于stack exchange,提问作者popeye
相关产品推荐
相关产品推荐

