Ssh

有沒有辦法在不修改 etc/hosts 文件的情況下使用主機名別名進行 ssh?

  • October 29, 2018

我花了幾個小時研究如何使 100 台主機自動化,這些主機都在一個本地域下。(我在 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 node1

以下行對於支持 IPv6 的主機是可取的

::1 ip6-localhost ip6-loopback

fe00 :: 0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

我試過了ip route | grep default,發現網關是 10.1.10.1 但不知道我是否應該在這個網關上或從這裡開始的任何進一步的步驟。

我嘗試cat /etc/resolv.conf並找到了我正在使用的 DNS 伺服器

貓 /etc/resolv.conf

由 resolvconf(8) 生成的 glibc 解析器 (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

搜尋 domain.com

我找到了所有節點都在使用的 DNS

xcat node1 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”)。我觀察到可以使用所有別名進行 SSH,例如在我進行此更改時node1不使用node1.domain.org,但文件總是在系統重新啟動時或當我繼續使用 wifi 連接而不是乙太網連接時被覆蓋。

我也試過驗證route命令,一切看起來都很正常,仍然沒有線索

路線

核心IP路由表

目標網關 Genmask 標誌 Metric Ref Use 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。我只是想找到一種可靠的方法來做到這一點。

是的,使用 ~/.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
dauser@www-backup.example.com's password:

老實說,這是毫不費力的。

~/.ssh/config

Host node* server*
 Hostname %h.domain.org

現在每個“節點”和“伺服器”都映射到域。

$ ssh node04–>$ ssh node04.domain.org

$ ssh server12–>$ ssh server12.domain.org

引用自:https://serverfault.com/questions/848133