在GCP实例上运行gcloud不能在ssh上运行,但可以在实例上运行

问题描述

我有一个使用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

该问题是由于/snap/bin不在here所述的PATH上引起的。

该错误正在积极处理中,但似乎尚未完成。它会特别影响ubuntu,并且gcloud实际上是作为默认发行版中的一个单元而安装的。

这导致了一些误导性的问题-在我的情况下,gcloud被用作docker的身份验证器,但是缺乏可用性意味着所产生的错误是“缺少权限”错误。

一种解决方法是

>> ssh <instance IP> PATH=$PATH:/snap/bin/ gcloud <some command>

希望这对某人有帮助!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...