SSH 터널 로컬을 다른 서버에 표시

SSH 터널 로컬을 다른 서버에 표시

테스트 중인 일부 하드웨어에 대한 연결을 시뮬레이션하는 GUI 테스트벤치가 있습니다. 테스트 베드는 Sun Sparc Ultra 2 SunOs 5.7이었습니다. 에뮬레이션 소프트웨어는 모니터가 켜져 있는지 확인합니다 :0.0. 그렇지 않으면 전원이 켜지지 않습니다. 우리는 이를 확인하지 않기 위해 시뮬레이션의 소스 코드를 다시 작성하지 않았습니다. 내 로컬 터미널에 표시되는 내용을 "보아야" 합니다. 이것을 시도했지만 x11vncXsun이 로깅 확장을 지원하지 않는 것 같습니다. SSH -X는 DISPLAY를 로 설정하면 :10.0작동합니다. cgwin을 실행하는 Windows 시스템에서 포트 6000을 포트 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를 할 때[이메일 보호됨]$DISPLAY는 서버 이름:0.0이며 로컬이지만 볼 수 없습니다. 내가 ssh -X를 할 때[이메일 보호됨]$DISPLAY는 localhost:0.0이며 내 시뮬레이션에서는 이를 원격으로 처리합니다.

답변1

시뮬레이션 소프트웨어가 디스플레이 번호가 0인지 확인하면 원격 디스플레이를 0으로 설정할 수 있습니다. Xsun로컬로 실행하거나 다른 모니터(예: )에서 실행 하고 있지 않은지 확인하세요 Xsun :1. OpenSSH 서버 구성 파일에 /etc/ssh/sshd_config다음 줄을 추가합니다 X11DisplayOffset 0.

SSH를 통해 연결하는 경우 환경 변수는 (위에서 설정한 대로 ) DISPLAY로 설정됩니다 . 이는 (모든 실제적인 목적을 위해) 애플리케이션에서 허용하는 동의어이므로 다음 항목에 넣을 수 있습니다 .localhost:0.0X11DisplayOffsetlocalhost:0.profile

DISPLAY=${DISPLAY%.0}

에뮬레이션 소프트웨어에 로컬 디스플레이가 필요한 경우 :0Xvfb(V가상에프절뚝거리는두번째엑스서버, 그것이 Solaris와 함께 제공되는지는 모르겠습니다). 위에서 언급한 것처럼 X 서버를 디스플레이에서 로컬로 실행하지 말고, :0있는 경우 실행하십시오. :1Xvfb를 사용하면 모니터에 쉽게 연결할 수 없지만 화면의 정적 이미지를 볼 수 있습니다.

Xvfb :1 -screen 0 1024x768x16 -fbdir /tmp &
DISPLAY=:1 simulation-program &
xwud -in /tmp/Xvfb_screen0

또는 Xnest, Xephyr 또는 VNC와 같은 창에 표시된 X 서버를 사용해 볼 수 있습니다. 다시 Sun 시스템에서 로컬 X 서버를 실행하는 경우 디스플레이에서 실행하십시오 :1. 예를 들어 VNC를 사용하면 다음과 같습니다.

vncserver :1

Windows 컴퓨터에서 VNC 뷰어를 사용하여 서버에 연결할 수도 있습니다.

관련 정보