我检查了许多有关使用中“权限被拒绝”错误的帖子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 命令。