Ssh
如何找到 X 伺服器的主機名
假設我在機器上
local
並使用 ssh 登錄機器remote
,使用 X11 轉發。在 ssh 會話中執行的程序有什麼方法remote
可以知道它們正在顯示local
嗎?理想情況下,我想知道執行 X 伺服器的電腦的主機名。我的目標是根據顯示在哪台機器上在程序(emacs)中引起不同的行為。
我認為 X 伺服器不會向客戶端報告其主機名。客戶端應該知道他們正在連接的主機名,但通過 SSH 連接,即
localhost
ssh 進行轉發。OpenSSH 伺服器設置
SSH_CLIENT
環境變數;您可以從那裡讀取客戶端的 IP 地址。那是伺服器看到的地址,因此您無法區分同一 NAT 後面的機器。這是 X 伺服器的地址,前提是沒有其他事情發生(SSH 轉發、客戶端上的遠端 X 伺服器……)。請注意,只有在 Emacs 中從 SSH 連接中啟動環境變數時,您才能在 Emacs 中獲得環境變數,而不是在使用 emacsclient 在執行的 Emacs 中創建框架時。您可以在 Emacs 中使用函式 和 獲取顯示的某些屬性(尺寸、顏色深度、X 供應商
x-server-XXX
……x-display-XXX
)display-XXX
。