I would like to use my ssh config to use a google cloud cli (
gcloud) to connect to google compute instances. (This is a follow-on to another question I asked, that had a working solution, but didn't address this part of my question)
The desired functionality is
ssh <instance-name>.gc would connect me to the gcloud instance.
To connect to the gcloud instance I can run:
/home/me/google-cloud-sdk/bin/gcloud compute --project "myproject" ssh --zone "myzone" me@<instance-name>
So I added an entry to my .ssh/config:
Host *.gc ProxyCommand /home/me/google-cloud-sdk/bin/gcloud compute --project "myproject" ssh --zone "myzone" me@$(basename %h .gc)
I then run
ssh <instance-name>.gc and get:
# 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
It seems to establish a connection, but I don't have a prompt to type at, so I press ctrl-c to kill it.
I could make an alias to achieve similar behavior, but I want to be able to use it with other entries in my ssh config, so I can use it as a jumpbox.
It could be that I am misusing
ProxyCommand, I get the same behavior if I replace the
gcloud command with
ssh me@<instace-ip> in the config file. If this is the case, is there an alternative config that help me to achieve my goal?
ssh under the hood, you can pass arguments to ssh after adding a
--. I have tried adding a
-- -t to force pseudo-terminal allocation, without change.