개념 정리/기본 개념
[X11 포워딩] ssh -X 접속 후, Docker 포트 바인딩하는 방법
jeonga
2023. 12. 27. 10:47
* 복붙 안되는 글은 개발자도구 설정에서 disable javescript 하시면 됩니다.
* wsl에서 ssh -X로 ubuntu 서버에 접속하여 X11 서버 바인딩하는 것은 저번글과 같이 진행함
ssh -X로 서버 접속 이후, docker와 ubuntu 서버의 포트를 바인딩해서
docker 내부에서 x11-apps를 실행할때 local에서 화면이 보여야 함.
1. Windows local 환경 (wsl 터미널)
sudo vi /etc/ssh/sshd_conig
X11Forwarding yes
X11UseLocalhost no
그리고 sudo service ssh restart 진행하기
(오류가 생긴다면 다음 코드 블록을 참고)
sudo ssh-keygen -A
sudo /etc/init.d/ssh start
sudo service ssh restart
2. 원격 Linux 환경 (ssh -X username@ip_address)
* VScode에서는 F1 > ssh config 옵션에서 ForwardX11 yes를 지정해주면 됩니다.
.Xauthority를 현재 폴더로 복사하기 (docker-compose.yml 위치)
cp /home/[username]/.Xauthority .
3. 원격 Linux 환경의 docker-compose.yml 수정하기
* 필수!! 라고 적힌 부분을 중심으로 custom 해주면 됩니다.
version: '3.7'
services:
internimage:
container_name: internimage
network_mode: host # 필수!!
image: internimage:latest
volumes:
- .:/home/user/
- $HOME/.Xauthority:/root/.Xauthority:rw # 필수!!
- /tmp/.X11-unix:/tmp/.X11-unix # 필수!!
privileged: true # 필수!!
stdin_open: true # 필수!!
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['2', '3']
capabilities: [gpu]
environment:
- GRANT_SUDO=yes
- DISPLAY=${DISPLAY} # 필수!!
ipc: host
tty: true
혹여나 ports 옵션이 들어가신다면 전부 제거하세요~
* 혹시라도 error가 뜨신다면, wsl local 환경에서 터미널 열고 ssh -X로 똑같이 서버로 진입하신뒤에
터미널 띄워두시고 vscode에서 xeyes로 테스트해보세요