도움이 되는 Tip/리눅스&워드프레스

아치리눅스 설치 과정 36 - GNOME Remote Desktop blackscreen fix

흔남. 2023. 6. 7. 01:32

이전 글(아치리눅스 설치 과정 35 - GNOME 창 최대화 버튼 복원 방법)에 이어...

 

원격접속 : PC 활용의 꽃입니다.

아이패드든 안드로이드든 모바일 기기로 PC에 원격 접속해서 화면을 보면서 업무 처리하면 장소 제약이 훨씬 덜하겠죠.

 

저는 윈도우 PC든 리눅스든 원격 접속 세팅을 반드시 해놓고 쓰기 때문에, 아치리눅스도 예외일 수 없습니다.

 

▲ Arch Linux GNOME에서는 "설정 - 공유" 항목을 켜고, "원격 데스크톱"을 "켬"으로 바뀌게 하여,

 

▼ "원격 데스크톱" 켜주고 "원격 조작"도 켜주고,

▲ 암호도 별도로 정해주면 될 줄 알았습니다.(리눅스 계정 암호와 다르게 설정 가능해요.)

 

▲ 아, gufw 방화벽 설치했었으니 방화벽 포트도 개방해줘야 겠군요.

 

▲ 규칙 탭에서 추가(+) 버튼을 누르고

 

▲ RDP 용 포트 3389만 추가하면 될 줄 알았습니다. (VNC 포트는 5900)

 

https://www.whatismyip.com/

▲ PC가 인터넷선 직접 연결되어 있다면 위 사이트에서 IP주소 확인하면 되고,

 

▲ 유무선 공유기 아래에 연결되어 있다면 ip address 명령어로 리눅스 IP 확인하면 되겠지요.

 

▲ 윈도우에서 원격 데스크톱 연결(Remote Desktop Connection)이라는 RDP 클라이언트 실행하고, RDP 접속 시도해보면 되는 게 정상이거든요?

 

그런데 Black Screen 뜨면서 연결이 안 된 것처럼 보이는 겁니다.

Arch Linux 사용하는 분들 중 원격접속 연결 구성하면서 검은 화면을 경험하셨다면 아래 내용을 끝까지 읽어보면 도움이 되실 겁니다.

 

아치 리눅스 GNOME, Remote Desktop 구성 요소 설치

결론부터 적으면, 터미널 창에 명령어 두 줄만 입력하면 됩니다.

sudo pacman -S wireplumber

systemctl --user --now enable wireplumber

 

이유가 궁금하면 본문을 계속 읽으세요.

 

https://wiki.gnome.org/Projects/Mutter/RemoteDesktop

그놈 공식 설명을 보면...

The data transfer and format negotiation of the screen casting is done by PipeWire.

화면 전파에 PipeWire라는 것이 관여하는 것 같습니다.

 

PipeWire. 대충 샤워기 호스가 떠오릅니다.

잘 모를 땐 아치위키.

https://wiki.archlinux.org/title/PipeWire

It aims to offer capture and playback for both audio and video with minimal latency

▲ 오디오 & 비디오 캡쳐, 플레이백. 그래서 원격 접속에도 쓰이는 것 같습니다.

1.1 Session manager 항목을 보면...

"PipeWire는 내부적으로 연결 논리를 구현하지 않습니다. 새로운 스트림을 감시하고 이를 적절한 출력 장치나 애플리케이션에 연결하는 부담은 세션 관리자라고 하는 외부 구성 요소에 맡겨집니다."

 

▲ PipeWire Media Session은 수명이 다한 것 같습니다.
WirePlumber밖에 선택지가 없어 보이네요.
wire는 선. plumber는 배관공(기술자).
pipewire와 wireplumber의 관계는 직관적이죠?

 

▲ 그래서, 내 컴퓨터에 wireplumber 깔려 있는지 확인했는데 없더군요.

 

그래서 원격 연결시 Black Screen이 떴던 것이고,

 

▲ sudo pacman -S wireplumber

해결을 위해 wireplumber를 설치해야 되겠습니다.

 

백그라운드에서 서비스로 돌아가고 있어야 일감을 처리할테니, 관련 작업을 좀 더 해야겠죠?

 

https://wiki.archlinux.org/title/WirePlumber

WirePlumber uses systemd user units to manage the server.

(무슨 말인지 모르겠음 ㅠㅠ)

https://wiki.archlinux.org/title/Systemd/User

어렵다... 한가지 주의점은...

'systemd --user' runs as a separate process from the 'systemd --system' process. User units can not reference or depend on system units or units of other users.

시스템 프로세스와는 별개로 돌아가며, 사용자별로 각각 돌아간다는 점. => 로그인 계정 달라지면 각각 세팅해줘야 될 것 같습니다.

 

https://pipewire.pages.freedesktop.org/wireplumber/running-wireplumber-daemon.html#systemd

https://github.com/mikeroyal/PipeWire-Guide#Installing-PipeWire-on-Arch-Linux

▲ 친절한 문서 두 개를 찾았습니다.

 

▲ systemctl --user --now enable wireplumber

 

처치 끝.

이제 윈도우 내장 원격데스크톱 연결 클라이언드 프로그램으로 테스트 해보면 접속될 겁니다.

(리눅스는 Remmina가 좋았숩니다. gnome-connections 패키지는 색이 틀어지더군요.)

 

화면은 완벽에 가깝에 전달 됩니다.

소리는 전달 안 되더군요. 방법 있으면 소개 부탁합니다.

 

▲ sudo pacman -S helvum

추가 : 미래의 나를 위해 helvum 설치.

 

한계

Wayland에서 GNOME 원격 데스크톱은 로그인 후 gnome-session(바탕화면)이 실행되어야만 사용할 수 있었습니다.

 

GDM(로그인창+제어판)은 로그인 성공한 뒤에야 gnome session을 열어 주는데요, 부팅/화면보호기 등 어떠한 상황에서든 Lock Screen(로그인창)으로 들어가면 3389번 포트 자체가 막히더군요. 무조건 비밀번호 입력 후 바탕화면이 나와야 3389포트 열리고 원격 데스크톱 접속 가능.

 

과거에 X11(xorg) + Ubuntu 리눅스에서 VNC로 원격 접속했던 기억을 떠올려 보면 외부 접속시 로그인창(GDM 아님)이 별도로 떴었습니다. 그것을 통해 원격지에서 로그인할 수 있었고, 바탕화면이 딱~ 떴기 때문에 실사용에 문제가 없었죠.

Wayland + GNOME에서도 원격 RDP 클라이언트로 GDM/서드파티 로그인창 접속 방법이 있는지 찾아봤는데, 아직은 없더군요. 헤드리스 세션(headless sessions)도 지원이 안 돼서, 원격지에서 마우스 포인터 움직이면 PC에서도 똑같이 따라다님.ㅋ 헤드리스 세션 지원 됐으면 PC 화면 변화 없이 원격접속 화면이 띄워졌을 겁니다.

 

결국 Wayland에서 GNOME 원격 데스크톱은 외출시에 써먹기 어려운 조건이었습니다. 누군가가 PC 로그인을 해줘야 되는 상황이라, 본인의 원격 접속보다는 제3자의 원격 지원 용으로 활용하는 것이 적절치 않을까 싶었습니다.

 

극복

단순 무식한 발상 : 자동로그인 설정으로 GDM 로그인 창을 제껴볼까?

영문 문서 찾아보면 Ubuntu 원격 데스크톱 연결 관련해서 비슷한 사례들이 꽤 나오는데, 포럼에서 텍스트 중심으로 소통이 오가는 모양새라 머릿속에 그림이 안 그려지더군요. 시행착오를 겪으면서 진행해 봤습니다.

 

설정 - 사용자 - "자동 로그인" 항목 활성화.

효과 : 재부팅 해봤는데 로그인 없이 통과. 성공.

 

화면 보호기(스크린세이버) 들어갔다 나올 때, 절전모드 해제할 때도 잠금화면이 뜨더군요.

=> 설정 - 개인 정보 - 화면 잠금 - 자동 화면 잠금 - 해제.

 

▼ 위 설정과 똑같은 효과를 내는 명령어 :

gsettings set org.gnome.desktop.screensaver lock-enabled false

▲ gsettings set org.gnome.desktop.lockdown disable-lock-screen 'true'

위 명령어를 입력했더니 우측상단 클릭시 자물쇠 버튼이 없어지더군요. 잠글 일이 생기면 도리어 불편할 것 같았습니다. 그래서 false로 복구했습니다. 져서, 더군요. (참고로 Lock Screen은 Win+L 단축키로도 발동시킬 수 있습니다.)

 

화면이 꺼져도 원격접속 끊기더군요.

=> 설정 - 개인 정보 - 화면 잠금 - 빈 화면 지연 시간 - 안 함.

 

추가로...

설정 - 전원 - 자동 대기 모드 : 적당히 체크.

(대기모드 진입하면 WOL로 켜가면서 써야 됩니다. 귀찮으면 아예 꺼버리세요.)

 

재부팅 해주면... 로그인 요구는 더이상 안 합니다.

희망회로 쌩쌩?

 

▲ 인증이 필요합니다. 로그인할 때 로그인 키 모음의 잠금을 풀지 않았습니다.

 

로그인키 인증 잠금 창이 떠 있는 동안에도 3389포트 RDP 원격 연결 안 되더군요.

이게... 잠금화면에서 계정 비밀번호 입력하면 자동으로 Login keyring 인증 창도 처리가 되는데, 자동로그인 쓰면 로그인키 인증창이 처리되지 않고 뜨는 것 같습니다.

 

▲ 무엇 때문인지 원격데스크톱 인증 암호도 멋대로 바뀌어 있고...
일단 바로잡아 rdp 되게 만들었는데, 재부팅하면 로그인키 인증창이 막을 때마다 RDP 안 됨.

 

▲ 증상 : 원결 데스크톱 연결. 내부 오류가 발생했습니다.

 

▲ 로그인키 모음 잠금의 패스워드는 원래 로컬계정 패스워드와 같잖아요?

그런데 로그인키 모음 잠금의 비밀번호를 빈칸으로 해버리면 위의 팝업 창이 안 뜬다고 하더군요.

 

단점 : 로그인 키링에 비밀번호가 안 걸려 있으므로, PC에 저장하는 모든 비밀번호가 평문으로 노출됨. RDP 비밀번호 어렵게 하기/포트 바꾸기/VPN 구축 등 적극적인 보호 정책을 세울 필요 있음. 자신 없으면 아래 과정을 따르지 마시오.

 

▲ 파일관리자 앱에서 숨긴 파일 표시합니다.

 

▲ /home/계정명/.local/share 경로의 keyrings 디렉토리 이름을 임의의 것으로 바꿉니다. 저는 keyrings-old로 바꿨습니다.

 

기존의 로그인키 모음(Login keyrings)이 무력화 되었습니다.

재부팅 합니다.

 

▼ Login keyrings 새로 만드는 과정이 자동으로 진행됩니다.

▲ "기본 키 모음"이라는 이름의 키모음(keyring)이 만들어 진다고 합니다.
새 키 모음의 암호를 지정하십시오.

=> 입력란을 비우고, 계속 버튼을 누릅니다.

 

▲ 암호를 암호화하지 않고 저장하시겠습니까?

=> 계속 버튼을 누릅니다.

 

조치 끝. 이제부터 Login Keyrings 관련 팝업창 안 뜰 겁니다.

 

▲ /home/계정명/.local/share 경로에 keyrings 경로가 새로 생겼을 겁니다.

 

▲ 들어가 보면 "기본 키 모음"... 생겼죠? 위에서 본 이름이죠?

웹브라우저 등에서 계정 저장 요청하는 것들이 여기로 들어갑니다.

키링 암호 안 걸어 놨으니까 평문으로 노출되겠죠?

그래서 PC에 각종 계정 정보를 저장하지 않는 것을 추천합니다.

 

▲ 설정 - 공유 - "원격 데스크톱"으로 들어가 보면...

 

▲ 인증 카테고리에서 계정 암호가 바뀌어 있을 겁니다. keyring 새로 만들어질 때 이렇게 된 건데, 앞으로는 이거 뚫리면 큰 일 납니다. 최대한 어렵게 바꿔 주세요.

 

▼ 이제 PC용 RDP 클라이언트로 접속 테스트 해보세요. (리눅스는 remmina)

▲ 잘 됨.

 

▲ 외부 접속 못하게 하려면 로그아웃 해버리면 되겠죠?ㅋ

 

▲ 아이패드용 RDP 클라이언트 써봤는데, 패드용/스마트폰용 RDP 클라이언트들은 리눅스 연결이 신통찮습니다. 실사용 힘들 듯하네요.

 

▲ 대안을 찾다가 RustDesk라는 오픈소스 무료 원격접속 프로그램을 알게 되었는데, Wayland 지원 안 한다고.ㅠㅠ

 

"기본 키 모음" keyring을 쓰게끔 여기서 멈추면 중수.

 

▲ 원격 데스크톱 비밀번호만 저장됐을 때 다른 항목들이 추가되는 것을 재빨리 막는 조치를 취하는 사람은 고수. 한 끗 차입니다. 차근차근 따라하면 어렵지 않습니다.

 

sudo pacman -S seahorse
seahorse 패키지를 설치합니다.
(정보 출처 : https://wiki.archlinux.org/title/GNOME/Keyring )
이게 뭐냐 하면...

 

▲ 암호 및 키(Passwords and keys)을 관리하는 앱입니다. 실행하세요.

 

▲ "암호" 카테고리에 "기본 키 모음"이 보이죠? 마우스 우클릭 해보면 이것이 "기본으로 설정"되어 있을 겁니다. 처음에는 "로그인"이라는 keyring이 기본값이었을 텐데, "기본 키 모음"을 추가하면서 이렇게 된 것이죠.

 

▲ 그러니까 ①"로그인" keyring을 기본값으로 만들고 구글크롬 비밀번호 등을 여기에 저장되도록 처리하거나, 아니면 위 스크린샷에서 test라는 키링이 추가된 것이 보이죠? 이렇게~~

 

▲ ②별도로 암호 키 모음(keyring)을 생성하고 키링 비밀번호를 건 다음, 해당 키링을 기본값으로 설정해 놓으면 "기본 키 모음"의 RDP 인증용 비밀번호만 노출되고, 나머지는 암호화되어 저장되지 않을까... 예상해 봅니다.

 

단, 위의 방식은 RDP 비밀번호를 바꿀 일이 생기면 "기본 키 모음"을 기본값으로 만들어 주고 처리해야 되는 불편함이 있습니다. RDP 비밀번호 바꾼 다음에는 "기본 키 모음" 이외의 것을 Default로 다시 정해줘야 되겠지요.

(암호 걸린 keyring에 RDP 비밀번호 저장하면 RDP 비밀번호가 멋대로 바뀌는 문제 있음. 구글 검색어 : gnome remote desktop password keeps changing )

 

여기까지 따라하느라 고생 많으셨고요,

 

▼ 외부에서 RDP 접속할 때 보안을 챙기려면 포트를 바꾸든 VPN을 쓰든 각자도생 해야 될 것 같습니다.

 

Dlink 디링크 DIR-615 공유기 포트포워딩(가상서버) 설정 방법

https://jimnong.tistory.com/604

 

시놀로지 RT2600AC : VPN 업자가 추천하는 와이파이 공유기

https://jimnong.tistory.com/969

wireguard 어중간하게 기웃거리지 말고, 안정화 될 때까지 openvpn 쓰는 것을 추천합니다.

 

다음글 : 아치리눅스 설치 과정 37 - GNOME Shell Extensions, 잠금화면 부활

반응형