我见过很多类似这个问题的版本,但我认为没有一个适合我的具体情况。
我在工作时使用一台计算机,该计算机通过 SSH 连接到一台服务器。在此服务器上,我想通过 SCP 从家里的 Mac 中获取一些文件。
我可以使用常规命令从服务器通过 SSH 连接到我的 Mac,没有任何问题:
ssh [email protected]
然而当我尝试 SCP 时我得到:-bash:/usr/bin/scp:权限被拒绝
我正在使用以下命令:
scp [email protected]:/absolute/filepath/i* local/folder
我也尝试过数字 -p 标志。我的 Mac 上只有一个帐户,它是管理帐户。我不确定是否存在权限问题,还是因为我通过 SSH 进入服务器,或者是其他原因。
当我从家里的 Mac 进行 SCP 操作时,我也能够成功地从服务器到我的 Mac 进行 SCP。
有什么建议么?
编辑:额外的相关信息最初以评论的形式发布,因为我对协议一时糊涂(我的错)。
具体与我最后一句关于能够“逆转” SCP 相关:当我作为本地机器登录到我的 Mac 时,以下命令有效:
scp -P 22003 [email protected]:Data/path/i* /Full/Path/On/Mac/
ls -l /usr/bin/scp
在服务器(本地)上运行返回以下内容:
rwxr-x---. 1 root root 67648 8月31日 12:40 /usr/bin/scp
ls -l /usr/bin/scp
在 Mac 上(远程)运行将返回以下内容:
-rwxr-xr-x 1 根轮 81360 十二月 1 14:45 /usr/bin/scp
答案1
上述命令因指定的错误而失败,但是当我作为本地机器登录到我的 Mac 时,以下命令有效:
scp -P 22003 [email protected]:Data/path/i* /Full/Path/On/Mac/
因此,您无法访问服务器,因此/usr/bin/scp
会收到“拒绝访问”错误。此类错误可能有很多原因,例如文件权限。
因为您可以scp
从您的 Mac 并且可以ssh
从服务器到您的 Mac,所以我认为这就是您现在应该做的。ssh
进入 Mac 然后scp
从那里进入。
要解决服务器上的问题,请首先检查您是否具有/usr/bin/scp
以下服务器上的执行权限:
ls -l /usr/bin/scp
您会看到类似以下内容的内容:
-rwxr-xr-x 1 root root 84104 Jan 16 14:28 /usr/bin/scp
^ ^ ^
基本上,该文件归用户所有root
(具有读、写、执行权限),组成员root
有读和执行权限,其他所有登录用户也有读和执行权限
如果您x
对该命令有(执行)权限,请使用scp -v
增加详细程度(您可以添加更多v
,最多三个,如果我没记错的话),您可能会看到一条消息告诉您哪里出了问题。您还可以尝试ldd /usr/bin/scp
查看所有依赖项是否存在且可读。