반응형
  • Client OS: Ubuntu 16.04
  • FreeRDP (xfreerdp) version: 2.0.0-dev2 (3c4385e)
  • Server OS: Windows 10 (version 1709, build 16299.309)



xfreerdp를 이용해서 리눅스에서 원격 윈도우 머신에 RDP (Remote Desktop Protocol) 연결을 해서 쓰고 있었는데, 2018년 들어서 윈도우10이 업데이트되고 나서는 아래와 같이 오류가 나면서 접속이 되지 않았다.



[19:43:47:999] [2320:2321] [INFO][com.freerdp.client.common.cmdline] - loading channelEx cliprdr
[19:43:47:033] [2320:2321] [ERROR][com.freerdp.core] - freerdp_set_last_error ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED [0x0002000F]
[19:43:47:033] [2320:2321] [ERROR][com.freerdp.core.transport] - BIO_read returned an error: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error


확인해 보니, 윈도우 10에서 네트워크 수준 인증(Network Leval Authentication; NLA)을 사용하여 원격 접속을 허용하는 옵션과 연관된 듯 했다. 비슷한 문제를 겪는 사람들의 의견을 봤을 때, NLA 옵션을 끄니까 다시 되더라는 사람도 있었고, xfreerdp를 실행할 때 보안 옵션(/sec)으로 nla를 지정해 주었더니 되더라는 사람도 있었다.




*네트워크 수준 인증 (NLA) 끄는 방법:

  1. 시작버튼 누르고 "제어판"이라고 입력해서 제어판(윈도우10 설정 말고) 실행
  2. 시스템 선택
  3. 좌측에 "원격 설정" 선택
  4. 하단 부분에 "이 컴퓨터에 대한 원격 연결 허용" 아래에 있는 체크박스 해제 (네트워크 수준 인증을 사용하여 원격 데스크톱을 실행하는 컴퓨터에서만 연결 허용 (권장))



*xfreerdp에서 보안 옵션 지정하는 방법:

커맨드 라인에서 실행할 때 /sec 옵션을 추가해 준다.

  • 네트워크 수준 인증을 사용할 경우, /sec:nla
  • 그렇지 않을 경우, /sec:tls



나는 NLA 옵션을 끄고, xfreerdp를 실행할 때 /sec:tls 옵션을 추가했더니 문제 없이 접속이 잘 되었다.




<참고자료>

https://github.com/FreeRDP/FreeRDP/issues/4449#issuecomment-372979253



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 14.04.2 LTS (amd64)

FreeRDP: 1.1.0-beta-2013071101


<NOTE> 

2016.08.24 현재 한영키 문제는 github에 있는 FreeRDP의 가장 최신 소스코드에서 해결되었다.

따라서 더이상 아래와 같이 굳이 베타 버전을 가져와서 직접 수정할 필요가 없게 되었다.

(다만 그 대신 최신 버전에서 전체화면 모드가 출력이 잘 안되는 듯한 버그가 있어 보이지만...)


* FreeRDP github 주소: https://github.com/FreeRDP/FreeRDP



FreeRDP는 현재 최신 버전(1.1.0-beta)에서도 한영키와 한자키가 작동하지 않는다.

한영키를 누르면 "Unknown key with X keycode 0x82", 

한자키를 누르면 "Unknown key with X keycode 0x83"

이러한 에러 메세지가 콘솔창에 표시된다.


FreeRDP의 최신 버전을 소스코드 컴파일을 통해서 설치했기 때문에 소스코드를 확인한 결과, 프로그램이 자체적으로 키보드 입력을 RDP keycode로 변환하는 과정에서 한영키와 한자키는 매핑된 키 정보가 없어서 키 입력이 누락되는 것이었다. 따라서 한영키와 한자키 입력에 대해서 올바른 RDP keycode 매핑이 있도록 연결만 해 주면 정상적으로 작동한다.

이를 위해 소스코드를 아래와 같이 고쳐 준다.


대상 파일: libfreerdp/locale/keyboard_xkbfile.c (line 51)

XKB_KEY_NAME_SCANCODE XKB_KEY_NAME_SCANCODE_TABLE[] =

{

{ "BKSP", RDP_SCANCODE_BACKSPACE},

{ "TAB", RDP_SCANCODE_TAB},

{ "RTRN", RDP_SCANCODE_RETURN}, // not KP

{ "LFSH", RDP_SCANCODE_LSHIFT},

...


위와 같이 51라인 쯤에 있는 XKB_KEY_NAME_SCANCODE_TABLE 배열에 아래 두 항목을 추가한다.

{ "HNGL", RDP_SCANCODE_KANA_HANGUL},

{ "HJCV", RDP_SCANCODE_HANJA_KANJI}


keyboard_xkbfile.c 소스코드 파일:

keyboard_xkbfile.c



혹시 freerdp (xfreerdp)가 실행중이면 종료한 다음, 소스코드 최상위 폴더로 가서 아래와 같이 새로 빌드하고 설치한다.

$ make

$ sudo make install


(참고) FreeRDP 소스코드에서 설치하는 방법: http://skylit.tistory.com/158


다시 freerdp (xfreerdp)를 실행하면 한영키, 한자키가 작동할 것이다.

$ xfreerdp /u:사용자계정 /v:원격컴퓨터주소:포트번호




반응형
블로그 이미지

Bryan_

,