我有一个使用SSH密钥正确设置的外部实例IP。如果我运行以下代码来访问GCP实例。

>> ssh <instance IP>
# Login happens
>> gcloud <some command>
# Gcloud outputs as expected
但是,我不能直接在ssh上运行gcloud命令。那是
>> ssh <instance IP> gcloud <some command>
bash: gcloud: command not found
我相信这是某些问题的根本原因,如果我手动在SSH中运行并在交互式 shell 程序中运行,则看到了我有权在何处运行命令,但如果我通过ssh传递了命令,则无此权限。
我努力了
>> ssh <INSTANCE IP> -t "source ~/.bashrc; gcloud auth list"
bash: gcloud: command not found
>> gcloud compute ssh instance-name -- -t "gcloud"
bash: gcloud: command not found
>> gcloud compute ssh instance-name --command="gcloud"
bash: gcloud: command not found
以及有关bashrc和gcloud的类似技巧,但无论如何我都无法立即看到与Google相关的内容。
实例运行的是Ubuntu 20.04,或多或少都有新镜像。问题出在实例之间,或者在我的本地计算机上连接到实例。
我怀疑我在这里缺少简单的东西-有人吗?

最佳答案

在ssh上检查二进制位置后

>> which gcloud
/snap/bin/gcloud
here所述,此问题是由/snap/bin不在PATH上引起的。
该错误目前正在积极处理中,但似乎尚未完成。它特别影响ubuntu,事实gcloud是作为默认发行版中的一个单元安装的。
这导致了一些令人误解的问题-在我的情况下,gcloud被用作docker的身份验证器,但是缺乏可用性意味着所产生的错误是“缺少权限”错误。
解决方法是
>> ssh <instance IP> PATH=$PATH:/snap/bin/ gcloud <some command>
希望这对某人有帮助!

关于bash - 在GCP实例上运行gcloud不能在ssh上运行,但可以在实例上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63380817/

10-14 18:48
查看更多