我正在尝试使用 scp 将一个大文件复制到云壳。
使用此处建议的命令所以回答
gcloud alpha cloud-shell scp \
localhost:~/Sites/my-app/big_file cloudshell:~/big_file
但即使我可以看到它为服务器添加了密钥,它仍然会失败Permission denied (publickey).
如果我做
gcloud alpha cloud-shell ssh
它可以正常登录服务器
答案1
事实证明,谷歌的调用scp
省略了正确的用户名。
解决方案 我成功上传了
/usr/bin/scp -P 6000 -i /Users/me/.ssh/google_compute_engine -o \
StrictHostKeyChecking=no ~/Sites/my-app/bigfile \
[email protected]:~/big_file
如何解决这个问题
我能够使用--verbosity debug
标志发现这一点
# gcloud alpha cloud-shell scp --verbosity debug localhost:~/Sites/my-app/big_file cloudshell:~/big_file
DEBUG: Running [gcloud.alpha.cloud-shell.scp] with arguments: [(cloudshell|localhost):DEST: "cloudshell:~/big_file", (cloudshell|localhost):SRC:1: "['localhost:~/Sites/my-app/big_file']", --verbosity: "debug"]
DEBUG: Running command [/usr/bin/scp -P 6000
-i /Users/chrisjensen/.ssh/google_compute_engine
-o StrictHostKeyChecking=no
~/Sites/my-app/big_file 35.185.184.136:~/big_file].
[...more debug info...]
^ 此行显示已运行的命令
然后我跑去ssh
看看参数是否有差异
gcloud alpha cloud-shell ssh --verbosity debug
DEBUG: Running [gcloud.alpha.cloud-shell.ssh] with arguments: [--verbosity: "debug"]
DEBUG: Running command [/usr/bin/ssh -t -p 6000
-i /Users/chrisjensen/.ssh/google_compute_engine
-o StrictHostKeyChecking=no [email protected]].
[...more debug info...]
^ 注意,它将用户名添加到服务器 IP 后面。
因此我复制了 scp 命令并添加了我的用户名,它运行得很顺利。
希望这可以帮助其他试图解决这个问题的人。
答案2
这个问题应该在最新版本的 gcloud 中得到修复,您可以通过 runnign 获取gcloud components update
。感谢您试用 alpha 版本!