ssh 將本地顯示器通過隧道連接到另一台伺服器
我有一個 GUI 測試台模擬連接到一些正在測試的硬體。測試台是 Sun Sparc Ultra 2 SunOs 5.7。模擬軟體會檢查您是否在
:0.0
. 如果不是,它將不會應用電源。我們沒有原始碼來重新編寫模擬以不檢查這一點。我需要“查看”本地終端上顯示的內容。我已經嘗試過x11vnc
,但似乎 Xsun 可能不支持記錄擴展。SSH -X 將 DISPLAY 設置:10.0
為退出。我真的需要將 6000 埠轉發到執行 cgwin 的 Windows 機器上的 6001 埠。(我假設 6001 是:1.0
並且是我的 Windows 框上的 x 伺服器也將列出)。這一切有可能嗎?這是有問題的程式碼。
/* Console can always access the HW */ if (xserver != (char *) NULL) { /* if the first two characters are ":0" */ if ((xserver[0] == ':') && (xserver[1] == '0')) termtype = TERMINAL_LOCAL; else if (uname(&utshost) == 0) { nnlen = strlen(utshost.nodename); if ((int) strlen(xserver) >= (int) (nnlen + 2)) { if ((strncmp(xserver, utshost.nodename, nnlen) == 0) && (xserver[nnlen] == ':') && (xserver[nnlen + 1] == '0')) termtype = TERMINAL_LOCAL; else termtype = TERMINAL_REMOTE; } /* END if */ } /* END if/else */ } /* END if */
我在執行時得到這個
xdpyinfo -queryExtensions
(為了相關性而被截斷):name of display: localhost:0.0 version number: 11.0 vendor string: The Cygwin/X Project vendor release number: 11001000 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: window 0x200023, revert to PointerRoot number of extensions: 22 BIG-REQUESTS (opcode: 132) Composite (opcode: 146) DAMAGE (opcode: 147, base event: 90, base error: 149) DOUBLE-BUFFER (opcode: 138, base error: 138) DPMS (opcode: 139) GLX (opcode: 148, base event: 91, base error: 150) Generic Event Extension (opcode: 128) MIT-SCREEN-SAVER (opcode: 133, base event: 82) RANDR (opcode: 143, base event: 88, base error: 146) RECORD (opcode: 137, base error: 137) RENDER (opcode: 142, base error: 141) SGI-GLX (opcode: 148, base event: 91, base error: 150) SHAPE (opcode: 129, base event: 64) SYNC (opcode: 134, base event: 83, base error: 133) X-Resource (opcode: 145) XC-MISC (opcode: 136) XFIXES (opcode: 141, base event: 86, base error: 139) XFree86-Bigfont (opcode: 140) XINERAMA (opcode: 144) XInputExtension (opcode: 130, base event: 65, base error: 128) XKEYBOARD (opcode: 135, base event: 85, base error: 136) XTEST (opcode: 131) default screen number: 0
當我 ssh name@server.com 的 $ DISPLAY is servername:0.0 which is local but I can not see. When I ssh -X name@server.com The $ DISPLAY 是 localhost:0.0 ,我的模擬將其視為遠端。
如果仿真軟體確實檢查到顯示器編號為 0,您可以將遠端顯示器設置為 0。確保您沒有在
Xsun
本地執行或在不同的顯示器上執行它(例如Xsun :1
)。在 OpenSSH 伺服器配置文件/etc/ssh/sshd_config
中,添加該行X11DisplayOffset 0
。如果您通過 ssh 連接,
DISPLAY
環境變數將設置為localhost:0.0
(X11DisplayOffset
如上設置)。這是(出於所有實際目的)localhost:0
您的應用程序接受的同義詞,因此您可以將其放在您的.profile
:DISPLAY=${DISPLAY%.0}
如果仿真軟體需要本地顯示
:0
,可以嘗試在Xvfb中執行(虛擬幀緩衝X伺服器,不知道是不是Solaris自帶的)。如上所述,不要在本地執行 X 伺服器 display ,如果有的話就執行它。使用 Xvfb,您無法輕鬆連接到顯示器,但您可以看到螢幕的靜止圖像。:0``:1
Xvfb :1 -screen 0 1024x768x16 -fbdir /tmp & DISPLAY=:1 simulation-program & xwud -in /tmp/Xvfb_screen0
或者,您可以嘗試在視窗中顯示的 X 伺服器,例如 Xnest、Xephyr 或 VNC — 同樣,如果您在 Sun 機器上執行本地 X 伺服器,請在 display 上執行它
:1
。例如,使用 VNC:vncserver :1
您甚至可以使用 Windows 機器上的 VNC 查看器連接到該伺服器。