使用域而不是 IP 地址的 SSH

SSH with domain instead of IP address

我有一个 ubuntu 16.04 @linode.com。

我希望能够通过子域 (master.mydomainname.com) 而不是 IP (192.0.2.1) 登录。

> hostname
domainname_master

> cat /etc/hosts
127.0.0.1     localhost
127.0.1.1     ubuntu.members.linode.com ubuntu
192.0.2.1     master.mydomainname.com mydomainname_master

我在 cloudflare 有一个有效的 A 和 AAAA 记录子域,可通过网络浏览器 (nginx) 访问

但是当我尝试

root@master.mydomainname.com

我无法连接: ssh:连接到主机 master.mydomainname.com 端口 22:没有到主机的路由

有了 IP 本身,我可以毫无问题地通过 SSH 连接。

我是不是漏掉了什么?

我不建议在 /etc/hosts 中这样做,除非您有其他理由这样做。相反,我建议编辑 ~/.ssh/config(或在 /etc/ssh/ssh_config.d 中为所有用户创建一个新文件)以添加一个条目,使这项工作适用于任何通过您的帐户使用 SSH 的内容(包括 scpsftprsync 等等)。

Host master master.mydomainname.com mydomainname_master
  Hostname 192.0.2.1
  User root

配置文件中的此内容(通过 man ssh_config 了解更多信息)将允许您 运行 ssh masterssh master.mydomainname.comssh mydomainname_master 而无需在命令行上指定主机 IP 甚至用户名 (root)。您总是通过 运行ning 覆盖用户名,例如ssh jan@master

(如果您要在系统范围内安装这个,您可能不想指定用户名。)