当用户对其主目录上拥有的文件执行 scp 命令时,scp 权限被拒绝

当用户对其主目录上拥有的文件执行 scp 命令时,scp 权限被拒绝

我检查了许多有关使用中“权限被拒绝”错误的帖子scp,但找不到我的问题的答案。

AWS 中的同一网络上有两台 ubuntu 服务器(假设服务器“A”和“B”),当我尝试将一个文件复制到另一台服务器时,A 到 B 不起作用,但从 B 到 A 起作用。 (请参阅下文)

在服务器“A”上,

ubuntu@server-a ~ $ ls -alt server*
-rwxr-xr-x 1 ubuntu ubuntu 8152 Aug  9 14:26 server.xml.bak

ubuntu@server-a ~ $ scp -P 443 server.xml.bak [email protected]:/home/ubuntu/
Permission denied (publickey).
lost connection

ubuntu@server-a ~ $ scp -P 443 /home/ubuntu/server.xml.bak [email protected]:/home/ubuntu/
Permission denied (publickey).
lost connection

我也尝试将远程文件复制到这里,但也失败了。

ubuntu@server-a ~ $ scp -P 443 [email protected]:/home/ubuntu/sakila.sql .
Permission denied (publickey).

但从服务器“B”来看,一切正常。

ubuntu@server-b ~ $ scp -P 443 [email protected]:/home/ubuntu/server.xml.bak .
server.xml.bak                                                    100% 8152     8.0KB/s   00:00

ubuntu@server-b ~ $ scp -P 443 sakila.sql [email protected]:/home/ubuntu/
sakila.sql                                                        100% 3153KB   3.1MB/s   00:00

正如您所看到的,这不是权限问题 - 所有操作都是由“ubuntu”在“ubuntu”主目录上完成的,并且文件也由“ubuntu”以755模式拥有。

所以现在我很困惑出了什么问题。

答案1

按照建议,我将原来的评论移至答案并提供更多详细信息,以防有人遇到类似问题。

我从 @lgeorget 的评论中得到了提示 - 我运行了该命令scp -v,发现这是由于缺少私钥造成的。

出于安全原因,我删除了服务器上的所有私钥并使用 Pageant 进行私钥管理。在这个场景中,我使用PuTTY连接到B(B是堡垒服务器),打开另一个PuTTY终端,再次连接到B,然后通过ssh连接到A。因此,选美可以处理B的私钥,但不能直接处理A的私钥(我无法识别这一点)
结果是,从B到目标服务器A的scp命令有效,但从A到目标服务器B的scp命令不起作用。

我将私钥上传到A进行测试,然后A中的scp命令也可以正常工作。

由于我无法在服务器上保留私钥,我认为我应该只在服务器 B 上使用 scp 命令。

相关内容