11

这是一个分为两部分的问题:

  • GCE 实例是否有稳定的公共 DNS 名称?例如,具有公共 IP abcd 的默认 DNS 名称似乎是 dcbabc.googleusercontent.com
  • 如果是,获取此信息的最佳方式是什么?这是我迄今为止一直在使用的 hack:

    EXTERNAL_IP=$(curl -s http://bot.whatismyipaddress.com/)
    EXTERNAL_DNS=$(dig +short -x ${EXTERNAL_IP})
    
4

2 回答 2

1

可以进行反向查找,对于 IP 地址,您可能更喜欢使用 gcutil https://developers.google.com/compute/docs/gcutil/tips

EXTERNAL_IP=$(gcutil getinstance --format=csv --zone=[your_zone] [your_instance] | grep external-ip | cut -d "," -f 2)

于 2013-07-17T00:27:32.823 回答
0

GCE 实例目前没有针对其外部 IP 地址的公共 DNS 名称。但是现在有一个gcloud compute config-sshdocs)命令是一个很好的替代品。

这会将Host块插入到您的~/.ssh/config文件中,其中包含主机密钥的 IP 地址和配置。

虽然这只对 SSH(以及基于 SSH 的应用程序,如 Mosh 和 git+ssh)有帮助,但它确实比 DNS 有一些优势:

  • 没有像 DNS 那样的缓存/传播延迟

  • 它预先填充正确的主机密钥,即使临时 IP 地址发生更改,也会以正确的方式检查主机密钥。

例子:

$ gcloud compute config-ssh
...
$ ssh myhost.us-west1-b.surly-koala-232
于 2020-09-13T20:09:09.330 回答