리눅스2023. 9. 19. 09:14

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/647743 (2021.4.15)

리눅스에서 원격 VNC서버에 접속해서 화면을 가져와 작업하는 방법이다. 클라이언트, 서버 모두 데비안/우분투 계열 배포판인 리눅스 민트(Linux Mint) 19.3 XFCE에서 작업했다.

원격 장비의 데스크탑 화면을 그대로 가져오는 VNC 프로토콜은 암호화되지 않는 방식이므로, ssh 터널링을 이용해서 암호화를 해 주는 것이 좋겠다.

우선 서버쪽에서 데스크탑 화면을 제공하기 위하여 x11vnc와 ssh서버 패키지(openssh-server)를 설치해 준다.

# S/W 저장소 정보 갱신
sudo apt-get update

# x11vnc, openssh-server 패키지 설치
sudo apt-get install x11vnc openssh-server

서버쪽의 작업은 이것으로 완료. 데스크탑 화면을 제공할 수 있도록 사용자가 로그인되어 데스크탑 화면이 보이는 상태여야 한다. 한가지 유의할 점은, XFCE 데스크탑 환경의 화면 잠금(xflock4)을 사용할 경우 클라이언트쪽에서 원격 화면에 대한 접근이 불가능했다(화면이 잠겨 있으면 암호 입력 화면이 보이지 않고 검게 나오며 원격에서 암호 입력을 통한 화면 잠금 해제 불가능).

이제 클라이언트쪽 작업이다. VNC 클라이언트는 remmina를 사용했다. 아래와 같이 작업하여 설치해 준다.

# S/W 저장소 정보 갱신
sudo apt-get update

# remmina remmina-plugin-vnc 패키지 설치
sudo apt-get install remmina remmina-plugin-vnc

이제 서버쪽으로 ssh 접속을 하여 ssh 터널링(ssh tenneling)을 통해 x11vnc를 실행한다. 서버 주소는 my_server.net으로 가정했다.

# 서버 접속(ssh) 및 x11vnc 실행
ssh -t -L 5000:localhost:5900 my_server.net 'x11vnc -localhost -display :0 -rfbport 5900'

-L 옵션 부분을 먼저 살펴 보자면, 클라이언트의 포트 5000번으로 접속하여 패킷을 보내면 ssh 서버쪽으로 전달된 후 여기서 localhost:5900으로 전달된다.

x11vnc 실행 부분을 보면 -rfbport 옵션으로 포트를 5900번으로 지정하여 실행되도록 했는데, 기본값이 5900이므로 포트 번호를 바꿀 것이 아니라면 -rfbport 옵션은 생략해도 된다.

ssh 접속이 완료되면 서버쪽에서 x11vnc 실행이 이루어지고 대기 상태가 된다.

이제 remmina를 실행하고 localhost:5000에 접속하면 원격접속을 통해 서버쪽 데스크탑 화면을 볼 수 있게 된다.

만약 키보드/마우스 입력을 사용하지 않고 화면만 볼 생각이라면, ssh 터널링 접속의 x11vnc 실행 부분에서 -viewonly 옵션을 추가해 주면 되겠다.

# 서버 접속(ssh) 및 x11vnc 실행
ssh -t -L 5000:localhost:5900 my_server.net 'x11vnc -localhost -display :0 -rfbport 5900 -viewonly'

728x90
Posted by 반달가면