[태그:] xforwarding

  • docker 내부 gazebo를 원격으로 실행

    그래픽 드라이버가 있는 PC를 거실로 옮기고, TV에 연결해서 사용했다. 사용할 때는 좋은데, 원격으로 터미널로 접속하여 gazebo를 실행하기 어려웠다.

    172.30.1.71

    • 저사양 PC로 인터넷 겨우 됨.

    172.30.1.9

    • 내부 nvidia 그래픽 카드 설치로 무거운 PC
    • 소음 발열 심함.
    • docker로 172.17.0.1로 gazebo를 실행.

    목표는 172.30.1.71 pc로 ssh 터미널로 172.30.1.9에 접속한 뒤 docker로 실행중인 gazebo를 172.30.1.71 화면으로 띄우기다.

    172.30.1.9에서 sshd_config를 다음과 같이 설정한다.

    $cat /etc/ssh/sshd_config
    ...
    #AllowAgentForwarding yes
    #AllowTcpForwarding yes
    #GatewayPorts no
    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost  yes
    ...

    X11UseLocalhost no로 설정하면 xauth add 명령어가 실행되지 않는다.

    172.30.1.71에서 ssh로 172.30.1.9로 접속한다.

    $ cat ~/.ssh/config 
    
    Host rygen3600
    	Hostname 172.30.1.9
    	ForwardX11 yes

    docker container를 다음 옵션으로 실행한다.

    nvidia-docker run -it -v /run/user/1000:/run/user/1000 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
      -v /home/now0930/ros2/test:/home/ros2_test --name foxy\
      --privileged --ipc=host --shm-size=512m --net=host -e DISPLAY=$DISPLAY \
      -e XDG_RUNTIME_DIR=/run/user/1000 --runtime=nvidia \
      osrf/ros:foxy-desktop-custom

    docker container에 접속하여 gazebo를 실행하면

    x11 connection rejected because of wrong authentication.

    에러가 뜬다. docker 외부 계정의 ~/.Xauthority 파일을 docker container root에 복사하면 gazebo가 실행된다.

    빈 화면인데 22 프레임이 나온다.