使用sudo用户登录后scp跨服务器复制文件提示Permission denied如何解决
SCP Permission denied 报错原因及排查方案
常见触发原因
- 源端文件权限不足:执行scp命令的用户对本地待传输的
file没有可读权限 - 目标端目录权限不足:目标服务器上的
x123用户对/opt/apps目录没有可写权限 - 目标端路径不存在:
/opt/apps目录未在目标服务器上提前创建 - SSH服务配置限制:目标服务器sshd配置禁止了
x123用户登录,或禁用了scp传输功能 - 目标端资源不足:
/opt挂载分区磁盘满,或x123用户的磁盘配额已用尽
逐步排查处理
第一步:校验源端文件权限
在源服务器执行以下命令确认文件权限:
ls -l file
如果执行scp的用户没有读权限,直接在scp命令前加sudo执行即可:
sudo scp -p file x123@targethost:/opt/apps
第二步:校验目标端目录权限与存在性
登录目标服务器,切换为x123用户执行以下命令测试写入权限:
touch /opt/apps/test.tmp
如果提示权限不足,可选三种处理方案:
- 给x123用户单独授予目录权限(目标端root身份执行):
setfacl -m u:x123:rwx /opt/apps - 更换目标端有
/opt/apps写入权限的用户执行scp - 先把文件传到x123的home目录
/home/x123,登录目标端后再手动移动到/opt/apps
如果提示目录不存在,先创建目录再配置权限即可:
sudo mkdir -p /opt/apps
第三步:校验SSH登录权限
本地执行以下命令测试x123用户能否正常登录目标服务器:
ssh x123@targethost
如果登录失败,检查目标服务器/etc/ssh/sshd_config配置,确认x123不在DenyUsers/ DenyGroups列表中,同时没有配置禁用scp的ForceCommand规则。
第四步:校验目标端资源
登录目标服务器执行以下命令检查磁盘使用情况:
df -h /opt quota -u x123
如果磁盘满或者配额超限,清理无用文件或扩容磁盘即可解决。
内容的提问来源于stack exchange,提问作者Anjana
相关产品推荐
相关产品推荐

