我花了几个小时研究如何自动化一个本地域下的数百台主机。(我在一台 ubuntu linux 17.04 机器上)
例如,我有 node1.domain.org、node2.domain.org,并且列表转到 node100.domain.org
实际上不可能编辑 /etc/hosts 文件并手动添加所有别名。
例如,
127.0.0.1 本地主机
127.0.1.1 哈里什
手动添加主机名别名
10.2.1.3 node1.domain.org 节点1
对于支持 IPv6 的主机,以下几行是理想的
::1 ip6-本地主机 ip6-环回
fe00::0 ip6-本地网络
ff00::0 ip6-mcast前缀
ff02::1 ip6-所有节点
ff02::2 ip6-所有路由器
我尝试了一下ip route | grep default
,发现网关是 10.1.10.1,但不知道我是否应该在这个网关上,或者从这里采取任何进一步的步骤。
我尝试cat /etc/resolv.conf
并找到了我正在使用的 DNS 服务器
猫/etc/resolv.conf
由 resolvconf(8) 生成的 glibc resolver(3) 的动态 resolv.conf(5) 文件
请勿手动编辑此文件 - 您的更改将被覆盖 127.0.0.53 是 systemd-resolved 存根解析器。运行“systemd-resolve --status”以查看有关实际名称服务器的详细信息。名称服务器 10.2.254.254 名称服务器 8.8.8.8 名称服务器 127.0.0.53
搜索域名.com
我发现所有节点都在使用的 DNS
xcat 节点1 dns
服务器:10.2.254.254#53(10.2.254.254)
远程节点 DNS 和我的本地机器 DNS 都匹配。
但是,不知道为什么 resolve.conf 文件中是 domain.com 而不是 domain.org,因为所有节点都在 domain.org 下而不是 domain.com 下(但它告诉我当我尝试编辑它时它会覆盖,而且它确实覆盖了。我尝试在将其更新为 domain.org 后运行“sudo /etc/init.d/networking restart”或“sudo service network-manager restart”,文件被覆盖)。我观察到,当我进行此更改时,可以使用所有别名(例如node1
不使用)进行 SSH node1.domain.org
,但系统重启时或我使用 wifi 连接而不是以太网连接时,文件总是被覆盖。
我也尝试验证route
命令,一切看起来都很正常,但仍然没有线索
路线
内核 IP 路由表
目标网关 Genmask 标志 指标参考使用 Iface
默认网关 0.0.0.0 UG 100 0 0 enp2s0f1
10.1.10.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0f1
本地链路 0.0.0.0 255.255.0.0 U 1000 0 0 enp2s0f1
我只想使用 ssh node1 而不是 ssh node1.domain.org,或者使用 ssh node50 而不是 ssh node50.domain.org,或者使用其别名 ssh 进入任何节点,而无需手动将其添加到 /etc/hosts。我只是想找到一种可靠的方法来做到这一点。
答案1
是的,使用 ~/.ssh/config
Host bsd1
Hostname 10.9.9.2
User bsduser
Port 2243
Host web-backup
Hostname www-backup.example.com
User dauser
Port 2229
基本上,在每个 Host 语句之后,你可以使用几乎任何在系统级 ssh_config 中有效的选项
然后只需 ssh 到您需要做的主机的任何标签即可 -
user@darkstar:~/ $ ssh web-backup
[email protected]'s password:
答案2
老实说,这毫不费力。
在~/.ssh/config
:
Host node* server*
Hostname %h.domain.org
现在每个“节点”和“服务器”都映射到域。
$ ssh node04
-->$ ssh node04.domain.org
$ ssh server12
-->$ ssh server12.domain.org
答案3
当然,使用你的 ssh 客户端配置(~/.ssh/config):
Host node1
Hostname node1.domain.org