我正在尝试连接到一个GCP实例,每次重新启动时都会更改其公共IP。为了动态获取IP,我使用以下gcloud
命令:
gcloud compute instances describe <vm-name> --zone europe-west --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
然后我有这个ssh config
文件:
Host MyHost
ProxyCommand ~/.ssh/vm-connect
这指向一个名为vm-connect
的脚本,其内容如下:
#!/bin/bash
get_host() {
gcloud compute instances describe <vm-name> --zone europe-west1-b --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
}
ssh minikf@$(get_host)
如果我只运行脚本,它可以成功连接到虚拟机。但是,如果我运行 ssh MyHost
,它会给我以下提示:
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: SSH-2.0-OpenSSH_8.2p1: command not found