使用域而不是 IP 地址进行 SSH

Jan*_*Jan 1 dns ssh linode ubuntu-16.04

我有一个 ubuntu 16.04 @\xc2\xa0linode.com。

\n\n

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

\n\n
> hostname\ndomainname_master\n\n> cat /etc/hosts\n127.0.0.1     localhost\n127.0.1.1     ubuntu.members.linode.com ubuntu\n192.0.2.1     master.mydomainname.com mydomainname_master\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

但当我尝试时

\n\n
root@master.mydomainname.com\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

有了 IP 本身,我就可以通过 SSH 进行连接了。

\n\n

我错过了什么?

\n

Ada*_*atz 12

我不建议您这样做,/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
Run Code Online (Sandbox Code Playgroud)

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

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