ssh 配置使用 gcloud cli 命令启动与 google 云计算实例的会话

ssh 配置使用 gcloud cli 命令启动与 google 云计算实例的会话

我想使用我的 ssh 配置来使用 google cloud cli ( gcloud) 连接到 google 计算实例。 (这是我问的另一个问题的后续问题,该问题有一个可行的解决方案,但没有解决我问题的这一部分)

所需的功能是ssh <instance-name>.gc将我连接到 gcloud 实例。

要连接到 gcloud 实例,我可以运行:

/home/me/google-cloud-sdk/bin/gcloud compute --project "myproject" ssh --zone "myzone" me@<instance-name>

所以我在 .ssh/config 中添加了一个条目:

Host *.gc
    ProxyCommand /home/me/google-cloud-sdk/bin/gcloud compute --project "myproject" ssh --zone "myzone" me@$(basename %h .gc)

然后我运行ssh <instance-name>.gc并得到:

# ssh <instance-name>.gc
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_8.0\r': command not found

它似乎建立了连接,但我没有提示输入,所以我按 ctrl-c 来终止它。

我可以创建一个别名来实现类似的行为,但我希望能够将它与 ssh 配置中的其他条目一起使用,这样我就可以将它用作跳转盒。


调试

可能是我误用了,如果我在配置文件中替换命令,ProxyCommand我会得到相同的行为。如果是这种情况,是否有替代配置可以帮助我实现目标?gcloudssh me@<instace-ip>

gcloudssh在幕后使用,您可以在添加--.我尝试添加 a-- -t来强制伪终端分配,无需更改。

答案1

我想出了一些有效的语法,也许它可以被清理,但它有效。

Host *.gc
    User me
    ProxyCommand gcloud compute --project "myproject" ssh --zone "myzone" me@$(basename %h .gc) --command="nc 0.0.0.0 22"

相关内容