我正在尝试使用gcloud
将文件复制到计算实例中,如下所示:
gcloud compute scp ./file.txt.bz2 root@instance-1:/home/mehran/
我面临一个错误:
No zone specified. Using zone [us-central1-c] for instance: [instance-1].
root@###.###.###.###: Permission denied (publickey).
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
我还测试了没有root:
gcloud compute scp ./file.txt.bz2 instance-1:/home/mehran/
并面临同样的错误。这是我可以ssh
进入同一个实例没有任何问题:
gcloud compute ssh instance-1
显然,我的用户没有对主文件夹的写入权限!即使是chmod 777
也无济于事。我最终复制到/tmp
文件夹,然后从那里拿起它!
出于某种原因,ssh(基于Web)和scp使用不同的用户。这就是我的scp用户无法访问该文件夹的原因。它试图写入另一个用户的主文件夹。
即使这篇文章似乎已经解决了,我也遇到了类似的问题:我可以通过SSH进入实例,但不能scp。原来我的实例上的文件夹没有读/写权限,所以我无法复制(写入)该文件夹。
授予权限:
chmod 777 <folder-name>
将文件/文件夹复制到实例中的文件夹:
sudo gcloud compute scp <file-to-copy> <username>@<instance-name>:<folder-to-copy-to-which-requires-permissions> --zone <zone> --project <project-id>