본문으로 바로가기

구글 클라우드나 aws에서 제공하는 리눅스를 이용하다 보면 gui가 쓰고 싶은 때가 있다.

그걸 하는 방법을 설명한다.

클라우드에 있는 우분투 18.04에 gui로 연결해보도록 하겠습니다.

이 과정은 먼저 클라우드 인스턴스에 gui를 설치하는 과정과 원격으로 우분투에 연결하는 과정으로 나뉩니다.

저는 Google Cloud를 이용하여 진행하겠습니다.


클라우드용 우분투 Server에 GUI 설치하기

클라우드에서 우분투 인스턴스를 만들면 기본적으로 Server용으로 설치가 되는 듯 한데 여기에는 gui가 없습니다.

먼저 우분투 인스턴스를 생성해줍니다.



자 처음에는 모두 cui 환경입니다




나중에 패스워드가 필요할 텐데 원하는 대로 바꿉니다. sudo 라서 현재 패스워드를 몰라도 바꿀 수 있습니다.

sudo apt update

업데이트를 해줘야 합니다. 아니면 gui 모듈을 못 찾더군요.


sudo apt install tasksel

tasksel를 설치합니다.



sudo tasksel install ubuntu-desktop

이 명령어로 우분투 데스크탑 gui를 설치할 수 있습니다.



설치가 진행중입니다.

설치가 끝나면



sudo systemctl enable gdm3 // 이건 꼭 안해도 됨 sudo systemctl start gdm3

명령어로 gui 를 켜줍니다. 만약 로컬 환경이었다면 이 명령어를 입력했을 때, gui가 시작됩니다.

하지만 우린 ssh로 연결되었기 때문에 그렇지는 않습니다.


rdp를 이용해 우분투에 원격으로 연결하는 법

이제 우분투에 연결을 해봅시다.

먼저 윈도우에 기본적으로 들어있는 원격데스크톱을 이용해서 우분투에 접속하는 방법입니다.


sudo apt install xrdp

xrdp라는 우분투에서 rdp 서버를 열어주는 프로그램을 설치합니다.

설치가 끝나면 알아서 실행되므로 이제 원격데스크톱을 통해 접속할 수 있습니다.

연결을 시도하면



윈도우가 아니라서 경고창이 하나 뜹니다. Yes를 누릅니다.

이렇게 나오는데 username은



에서 psj7327로 나옵니다. 비밀번호는 처음에 passwd로 설정한 것을 이용하면 됩니다.

다음에는



이렇게 나오면서 패스워드를 제대로 입력해도 계속 인증이 안될 수 있는데 저기서 묻는 건 ubuntu계정의 패스워드이기 때문이다.

Cancel 버튼을 누르면 됩니다.

그러면 이제 우분투를 이용할 수 있습니다. 근데 왠지는 모르겠지만 바탕화면은 조금 이상하네요.

아 참고로 원격 gui를 이용할 거라면 한국에 가까운 region에 인스턴스를 만드는 게 좋겠습니다.

vCPU 2개로 us-east에 만들어보니 되게 느리네요.

※만약에 똑같이 했는데 원격 접속이 안될 경우 참고

여기서 로그인을 한 뒤에 우분투 화면이 나오고 나서 제대로 되지 않을 수 있는데



sudo bash -c "cat >/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla" <<EOF [Allow Colord all Users] Identity=unix-user:* Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile ResultAny=no ResultInactive=no ResultActive=yes EOF

이렇게 입력해줍니다.

참고한 곳 : https://askubuntu.com/questions/1031519/xrdp-on-ubuntu-18-04lts

또는 rdp는 3389번 포트를 이용하는데 이 포트가 닫혀 있지는 않은 지 확인해보는 게 좋겠다.

여기까지만 해도 사용할 수는 있다. 하지만 rdp연결은 로컬실행과 다르게 테마가 이상하게 되어있다.

파일을 들어가도 아이콘이 빈문서 같은 모양이고, 터미널도 흰색이고 바탕화면도 없다.

이걸 해결하기 위해서는 수동으로 트위해야한다.

먼저 접속한 rdp에서 Win키를 누르면 검색을 할 수 있는데 tweak를 검색하면 gnome tweak이 있다.



설치한다. 이때 ubuntu 계정의 패스워드가 필요하니 미리 sudo passwd ubuntu로 바꿔두자.



설치되면 실행한다.




이렇게 설정한다.



이제 평범하게 우분투를 켠 것처럼 되었다.


VNC를 이용해서 원격으로 우분투에 연결하는 법

그 다음은 vnc를 이용해서 연결하는 방법이다. 이 설정은 gui에서 할 수도 있고 cli환경에서도 할 수 있다.

하지만 모든 vino를 이용한 vnc의 실행을 cli에서 하는 법은 찾지 못했다.

위의 방법을 이용해 먼저 rdp로 접속한다.

설정에 sharing으로 들어갑니다.



이제 Screen Sharing을 켜줘야하는데



여기서 왼쪽위의 껄 on으로 바꾸려고 눌러봐도 다시 off로 돌아올 겁니다.

그건 저걸 on으로 하려면 Network를 선택해야하는데 No networks selected for sharing에서 보이는 것처럼

네트워크를 검색하지 못했기 때문입니다.

이를 해결하기 위해서 아래와 같이 따라합니다.



/etc/netplan/50-cloud-init.yaml 파일이 보일 겁니다.

sudo rm /etc/netplan/50-cloud-init.yaml sudo vi /etc/netplan/50-cloud-init.yaml

그리고 vi에디터가 켜지면 i를 눌러서 편집 모드로 바꾼 뒤에

# Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager

를 입력하고 Esc, :wq 엔터로 저장합니다. 이때 단락도 똑같이 맞추는 게 좋다.



만약에 이런 식으로 단락을 다르게 하면 문제가 생길 수도 있는데 아예 인스턴스에 ssh나 다른 연결이 불가능할 수 있다.

그리고 sudo reboot으로 재부팅 한 뒤에 다시 원격데스크톱으로 들어가 봅니다.



이제 정상적으로 Screen Sharing 을 켤 수 있습니다.

여기서 꼭 Require a password를 체크해야 정상적으로 사용할 수 있다.

위쪽 옵션을 택해보니 연결이 되도 화면이 나오지 않았었다.


자 이제 여기서 gui가 필요한 부분이었던, Screen Sharing을 체크하고

Require password옵션으로 변경하고 패스워드를 입력하는 과정을 cli에서 하는 법을 설명하겠다.

제일 먼저

nmcli connection show를 입력해본다.



이런식으로 나올 것이다. 여기서 uuid부분을 복사해서

dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx']"

여기에서 xxx가 있는 자리에 대신 넣으면 된다. 그러면 우선 gui에서 Screen Sharing을 체크한 상태가 된다.

다음으로

gsettings set org.gnome.Vino prompt-enabled false

를 입력하면 패스워드 사용을 체크하게 된다.

이제 패스워드 자체를 입력해야하는데 패스워드는 파일 상에서 base64로 암호화되어 저장되있다.

그래서 우리가 직접 넣으려면 수동으로 암호화를 해야한다.

https://www.base64encode.org/ 에 들어가서 글자를 넣으면 암호화해준다.



예를 들어 비밀번호가 1234로 하고 싶다면 MTIzNA==를 비밀번호 자리에 넣어야한다.

gsettings set org.gnome.Vino vnc-password MTIzNA==

MTIzNA== 자리에 자신의 비밀번호를 암호화한 값을 넣으면 된다.

이런식으로 입력하면 최종적으로 비밀번호 입력까지 완료된다.

그 다음 문제가 있다. 옵션은 다 켜줬지만 vnc서버인 vino는

gnome session이 시작될 때 함께 켜진다. netstat -tnlp 를 보면



정상적으로 ssh를 통해 접속할 수 있는 환경임에도 vino는 보이지 않는다.

하지만 rdp 원격 데스크톱을 이용해서 gnome에 로그인을 하면



보이는 것처럼 vino-server로 실행된 것들이 보인다.

이 상태에서 rdp를 그냥 종료하면 로그인된 채로 세션이 유지되서 vnc로 접속할 수 있다.

하지만 logout으로 종료하면 gnome 세션이 logout되기 때문에 vnc로 접속할 수 없다.

따라서 rdp로 접속을 해서 로그인을 한 다음 vnc를 사용하는 방법이 있고 아니면 아예 vino말고

vnc4server를 설치해서 사용하면 gnome이 아니라 xfce4 gui를 이용할 수 있다.


추가적으로,

우분투가 아닌 환경에서 vnc로 접속하기 위해서는 오류가 날 수 있어서 암호화를 꺼줘야한다고 합니다.

gsettings set org.gnome.Vino require-encryption false

터미널에서 이렇게 입력해줍니다.

이제 우분투에서 vnc로 접속해봅시다.



Remmina를 실행합니다.



rdp를 눌러서 vnc를 선택한 뒤에, 접속하려는 ip주소를 적고 엔터를 친다.

아마 따로 설정을 안했으면 연결이 안될텐데 포트 포워딩을 해줘야 한다.



구글 클라우드에서 방화벽 규칙으로 들어간다.



이렇게 5800, 5900번 포트를 열어주는 방화벽 규칙을 추가하자.

다시 시도해보면



여기에 아까 입력한 비밀번호를 적는다.



이런식으로 접속이 되는 걸 볼 수 있다.

윈도우에서는

https://www.realvnc.com/en/connect/download/viewer/ 에 들어가면 vnc접속 툴을 다운 받을 수 있다.



똑같이 ip를 적고 엔터를 친다.



Continue



입력해놨던 비밀번호를 입력한다.



접속이 잘 된다.


리눅스 클라이언트에서 특정 gui 앱 실행하기

아예 원격 데스크톱처럼 사용하는 것 말고도 리눅스 클라이언트라면 특정한 애플리케이션만 gui로 실행할 수 있다.

터미널을 열고

ssh -X username@server

username, server는 각각 해당되는 걸 입력하면 된다.

-X 옵션은 x11 display 포워딩을 사용하는 것이다.



이렇게 접속이 될텐데 이제 그냥 원하는 걸 실행하면 gui로 나온다.



리브레 오피스를 한 번 켜보자.



마치 내 컴퓨터에서 이용하는 것처럼 사용할 수 있지만 저장을 눌러보면

분명히 server의 디렉토리들이 보인다.

윈도우라면 xming이라는 윈도우용 x11 포워딩 프로그램을 설치해서 사용할 수 있다.