我之前在我的本地(Mac OS x 10.6)/etc/hosts 文件中添加了我服务器的公共 IP,如下所示:
123.123.123.123 myServer
允许我通过 ssh 连接到 myServer,而不必记住服务器的 ip 地址,并且工作正常(使用 shh 公钥),如下所示:
ssh myServer1
然而,在 Amazon EC2 实例上,我尝试使用提供的长公共 DNS 地址执行相同操作,并在 /etc/hosts 中添加了以下内容:
ec2-23-23-23-23.compute-1.amazonaws.com myServer2
但是当我尝试 ssh myServer2 时说“无法解析主机名”
知道为什么这不起作用吗?我该如何让它工作?
我想要使用的完整命令是:
ssh -i key.pem [email protected]
我正在尝试创建一个可能如下所示的快捷方式:
ssh -l username myServer2 or ssh -i key.pem -l username myServer2
有任何想法吗?
更新:我使用别名来代替,这更简单:
在 .bash_profile 中添加了此内容(MAC OS x)
alias myServer='ssh -i /path/to/key.pem [email protected]'
(需要关闭并再次打开终端或使用源 ~/.bash_profile )然后只需在命令行上使用 myServer 即可进行 ssh $ myServer
答案1
无需编辑hosts
文件,请阅读SSH 客户端配置。
您可以在 中创建主机别名~/.ssh/config
。例如:
Host myServer2
HostName ec2-23-23-23-23.compute-1.amazonaws.com
UserName username
如果您只使用 SSH,这将正常工作。如果您需要访问其他服务,请设置 DNS,或在 SSH 中使用端口转发(使用-L
)。
答案2
行的格式/etc/hosts
为
<ip address> <hostname> [<alias> ...]
因此您必须指定 IP 地址作为第一个字段。这就是您尝试使用 EC2 主机名失败的原因。
无论如何您都不需要这样做,因为(如果 DNS 解析有效)名称将由 DNS 查找来解析。