使用gcloud compute scp传至GCP实例instance-1的文件去向何方?
当你执行gcloud compute scp D:\FPX\new_tst.txt instance-1:时,命令无报错说明传输已经成功,但找不到文件的核心原因是你没注意到gcloud compute scp的默认目标路径规则。
为什么找不到文件?
默认情况下,gcloud compute scp会把文件传输到GCP实例中你的gcloud配置默认SSH用户的主目录(/home/<default-ssh-user>/),而不是你在Cloud Shell里当前操作的用户目录,也不是根目录或/tmp。
举个常见场景:如果你的实例是Ubuntu镜像,GCP默认的SSH用户是ubuntu,那文件会传到/home/ubuntu/new_tst.txt;如果是Debian镜像,默认用户是debian。而你在Cloud Shell里可能用的是cloudshell-user这类系统自动生成的用户,去自己的home目录找自然看不到。
快速定位文件的方法
先确认你的gcloud默认SSH用户
在本地终端或Cloud Shell里执行这条命令:gcloud config get-value compute/ssh-user输出的结果就是默认的SSH用户名,比如
ubuntu。登录实例查看目标目录
执行命令直接登录实例:gcloud compute ssh instance-1登录后默认就在该用户的home目录,直接执行
ls就能看到new_tst.txt;或者手动指定路径查看:ls /home/<刚才查到的用户名>/下次传输时指定明确路径
如果你想把文件传到指定位置,比如Cloud Shell当前用户的home目录(假设用户是cloudshell-user),可以这样写命令:gcloud compute scp D:\FPX\new_tst.txt instance-1:/home/cloudshell-user/要是想传到/tmp目录就更直接:
gcloud compute scp D:\FPX\new_tst.txt instance-1:/tmp/
额外提示
如果你不确定实例里的用户情况,登录实例后执行cat /etc/passwd可以查看所有系统用户,重点关注home目录在/home/下的用户,大概率就是你的默认SSH用户。
内容的提问来源于stack exchange,提问作者Shahnaz Khan




