Networking

是否可以通過 SSH 訪問子網配置錯誤的伺服器?

  • November 14, 2019

我們有一台伺服器,我們的一位工程師錯誤地配置了子網,現在我們被鎖定在這台伺服器之外,我知道唯一可行的訪問是來自 IDC 的串列控制台(這意味著請 IDC 工程師幫助我們) .

什麼配置錯誤:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

出於好奇 - 有沒有辦法避免呼叫 IDC 並以某種方式通過 SSH 連接到該主機(然後我們可以修復配置)?

您需要能夠在同一網段上的另一台主機上登錄。訪問配置錯誤的主機的一些方法需要中間主機上的 root 權限,但還有一種簡單的方法無需中間主機上的 root 權限即可獲得訪問權限。

使用 IPv6 訪問主機的簡單方法

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

上述命令中的以下範例值需要用正確的值替換為您的案例:fe80::42:ff:fe:42eth0userintermediate-hosttarget-server

詳細解釋它是如何工作的

ProxyCommand是當您無法直接打開到目標主機的 TCP 連接時使用的 ssh 功能。to 的參數ProxyCommand是使用其標準輸入/標準輸出而不是 TCP 連接的命令。

-W用於打開單個埠轉發並將其連接到 stdin/stdout。這與ProxyCommand.

fe80::42:ff:fe:42%%eth0是目標主機的連結本地地址。請注意,由於用作轉義字元,鍵入的 ssh 命令必須在該位置ProxyCommand使用。您可以通過執行找到該段上的所有連結本地地址。%``%%``ssh user@intermediate-host ping6 -nc2 ff02::1%eth0

為此目的使用 IPv6 鏈路本地地址通常是最簡單的方法,因為它在所有現代系統上預設啟用,並且即使 IPv4 和 IPv6 堆棧都嚴重錯誤配置,鏈路本地地址也能繼續工作。

回退到 IPv4

如果 IPv6 在配置錯誤的主機上完全禁用(絕對不推薦),那麼您可能不得不求助於使用 IPv4。由於 IPv4 不像 IPv6 那樣具有鏈路本地地址,因此使用 IPv4 訪問配置錯誤的主機會變得更加複雜,並且需要在中間主機上進行 root 訪問。

如果配置錯誤的主機仍然能夠使用其預設網關,您將能夠從外部訪問它。可能錯誤配置的網路遮罩也破壞了預設網關,因為堆棧拒絕使用網路遮罩覆蓋的前綴之外的網關。如果確實如此,則配置錯誤的主機將只能與 192.168.1.8 通信,因為這是該錯誤配置主機目前可訪問的子網中唯一的其他 IP 地址。

如果您在 192.168.1.8 上登錄,則可能只能從那裡 ssh 到 192.168.1.9。如果 192.168.1.8 目前未分配,您可以將其臨時分配給您具有 root 訪問權限的網段上的任何主機。

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