通过名称访问云机器

通过名称访问云机器

我在 Google Cloud 和 Amazon 上都有生产机器。在这两个云上,我在每个云上都有一个称为监控的公共服务器,它有公共 IP。通过这些监控机器,我可以访问各自云上的所有机器。然而,问题是我必须像ssh -i abc.pem user@<ip address> 我希望的那样访问它们,就像ssh -i abc.pem user@<machine name> 如何实现这一点?

答案1

DNS。

轻松插入您组织的 DNSmonitoring.gcp.example.netmonitoring.aws.example.net

答案2

如果您的解决方案必须扩展到一群需要方便访问您的云实例的人,那么@JohnMahowald 的答案就是正确的。

但如果只有你一个人,和/或你无法让你的 DNS 管理员配合你的请求,那么你可以探索其他途径。

如果您只需要方便的 ssh 访问,那么您的~/.ssh/config文件就是您的朋友。

$ cat << EOF >> ~/.ssh/config
Host machine_name
  Hostname ip.addr.of.machine
  User remote_username
  IdentityFile ~/.ssh/abc.pem

EOF

在您的~/.ssh/config文件中使用该节时,当您发出命令时:

$ ssh machine_name

ssh将使用给定的 IP 地址ip.addr.of.machine和远程用户名remote_username连接到该主机。

您的/etc/hosts文件还可以替代实际的 DNS 条目,例如,如果您要查询该地址的网页或 SNMP 代理。但同样,这可能仅在极少数人需要方便的访问时才有效。

如果您只需要 ssh 访问,那么该.ssh/config解决方案是高度可配置的。即使您为您的主机提供一个 DNS 条目,您仍然可以在行中使用更短、更易于输入的昵称Host,并将 DNS 名称放在Hostname行中。

Host gcp
    Hostname monitoring.gcp.example.net
    User gcp_username
    IdentityFile ~/.ssh/abc.pem

Host aws
    Hostname monitoring.aws.example.net
    User aws_username
    IdentityFile ~/.ssh/abc.pem

通过这些config条目您可以:

$ ssh gcp

或者

$ ssh aws

登录任一实例,使用每个实例的正确用户名,而不必记住使用哪个身份密钥。

相关内容