You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

从远程Mac经SSH服务器执行SCP失败问题求助

解决服务器执行SCP时出现Permission denied的问题

看起来你遇到的问题是在服务器上能正常SSH连接家里的Mac,但执行scp命令时被拒绝权限——这个错误提示-bash: /usr/bin/scp: Permission denied其实是告诉你当前在服务器上的用户没有权限运行服务器上的scp命令,和家里的Mac关系不大,先从服务器端一步步排查:

第一步:检查服务器上scp的执行权限

首先登录到服务器,运行这条命令查看scp文件的权限:

ls -l /usr/bin/scp

正常情况下输出应该是类似这样(注意最后三位的x,代表所有用户都有执行权限):

-rwxr-xr-x 1 root root 102456 Aug 10 12:00 /usr/bin/scp

如果你的输出里最后三位是r--(没有x),那就是普通用户没法执行scp,需要联系服务器管理员给scp加上执行权限:

sudo chmod 755 /usr/bin/scp

第二步:排查SELinux/AppArmor的限制

如果权限是正常的,但还是报错,那可能是服务器上的安全模块(比如SELinux)阻止了scp的执行。可以临时关闭SELinux测试:

sudo setenforce 0

然后再试一次scp命令,如果能正常运行了,说明是SELinux的上下文问题,修复一下:

sudo restorecon -v /usr/bin/scp

之后记得重新开启SELinux(sudo setenforce 1),关闭安全模块会带来系统风险。

第三步:检查scp是否损坏或被篡改

有时候scp可能因为系统更新、误操作被损坏或者替换,你可以对比scp和ssh的版本(它们通常来自同一个openssh包):

scp -V
ssh -V

如果版本不一致,说明scp可能有问题,重新安装openssh客户端包即可:

  • 对于Debian/Ubuntu系统:
    sudo apt reinstall openssh-client
    
  • 对于CentOS/RHEL系统:
    sudo yum reinstall openssh-clients
    

第四步:检查是否有别名或bash配置干扰

有时候用户会给scp设置别名,或者bash配置里有自定义逻辑覆盖了scp命令,运行这条命令看看scp的实际指向:

type scp

如果输出是scp is aliased to ...,说明有别名干扰,先取消别名再测试:

unalias scp

另外你提到尝试过-p参数,这个参数是用来保留文件的权限和时间戳的,和执行scp命令本身的权限问题无关,所以解决不了当前的错误哦。

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

火山引擎 最新活动