Ssh

如何找到 X 伺服器的主機名

  • January 27, 2021

假設我在機器上local並使用 ssh 登錄機器remote,使用 X11 轉發。在 ssh 會話中執行的程序有什麼方法remote可以知道它們正在顯示local嗎?理想情況下,我想知道執行 X 伺服器的電腦的主機名。我的目標是根據顯示在哪台機器上在程序(emacs)中引起不同的行為。

我認為 X 伺服器不會向客戶端報告其主機名。客戶端應該知道他們正在連接的主機名,但通過 SSH 連接,即localhostssh 進行轉發。

OpenSSH 伺服器設置SSH_CLIENT環境變數;您可以從那裡讀取客戶端的 IP 地址。那是伺服器看到的地址,因此您無法區分同一 NAT 後面的機器。這是 X 伺服器的地址,前提是沒有其他事情發生(SSH 轉發、客戶端上的遠端 X 伺服器……)。請注意,只有在 Emacs 中從 SSH 連接中啟動環境變數時,您才能在 Emacs 中獲得環境變數,而不是在使用 emacsclient 在執行的 Emacs 中創建框架時。

您可以在 Emacs 中使用函式 和 獲取顯示的某些屬性(尺寸、顏色深度、X 供應商x-server-XXX…… x-display-XXXdisplay-XXX

引用自:https://unix.stackexchange.com/questions/84848