修改 /etc/hosts 轻松访问亚马逊 EC2 实例的域名(或 IP 地址)

ven*_*nix 5 ssh hostname amazon-ec2 hosts-file

我以前在我的本地(Mac OS x 10.6)/etc/hosts 文件中添加了我服务器的公共 ip,如下所示:

123.123.123.123 myServer
Run Code Online (Sandbox Code Playgroud)

允许我 ssh 到 myServer 而不必记住服务器的 IP 地址并且工作正常(使用 shh 公钥),如下所示:

ssh myServer1
Run Code Online (Sandbox Code Playgroud)

但是,在 Amazon EC2 实例上,我尝试使用提供的长公共 dns 地址执行相同操作,并在 /etc/hosts 中添加了以下内容:

ec2-23-23-23-23.compute-1.amazonaws.com myServer2 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试 ssh myServer2 时说“无法解析主机名”

任何想法为什么这不起作用?我怎样才能使这项工作?

我要使用的完整命令是:

ssh -i key.pem user@ec2-23-23-23-23.compute-1.amazonaws.com 
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个快捷方式,可能是这样的:

ssh -l username myServer2 or ssh -i key.pem -l username myServer2
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新:我改用别名,这更容易:

在 .bash_profile (MAC OS x) 中添加了这个

alias myServer='ssh -i /path/to/key.pem user@ec2-23-23-23-23.compute-1.amazonaws.com' 
Run Code Online (Sandbox Code Playgroud)

(需要再次关闭并打开终端或使用 source ~/.bash_profile )然后在命令行 $ myServer 上使用 myServer ssh

Jam*_*man 7

hosts阅读有关SSH 客户端配置的信息,而不是编辑您的文件。

您可以在~/.ssh/config. 例如:

Host myServer2
     HostName ec2-23-23-23-23.compute-1.amazonaws.com
     UserName username
Run Code Online (Sandbox Code Playgroud)

如果您只使用 SSH,这将正常工作。如果您需要访问其他服务,请设置 DNS,或在 SSH 中使用端口转发(使用-L)。


Flu*_*lup 2

行的格式/etc/hosts

<ip address>  <hostname> [<alias> ...]
Run Code Online (Sandbox Code Playgroud)

因此您必须指定 IP 地址作为第一个字段。这就是您尝试使用 EC2 主机名失败的原因。

无论如何,您不需要执行此操作,因为(如果 DNS 解析正常)该名称将通过 DNS 查找进行解析。