Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Hyper-V 가상 머신에 Console 모드로 로그인하는 방법

지난 글의 실습을,

로컬의 USB 장치를 원격 머신에 제공하는 방법 - usbip-win
; https://www.sysnet.pe.kr/2/0/12858

하기 위해 2대의 컴퓨터를 마련하고, A 컴퓨터에서 USB 장치를 바인딩 후 B 컴퓨터에 RDP로 로그인을 해 USB Attach를 하면 어떻게 될까요?

아마도, 다른 USB 장치라면 정상적으로 실습이 되겠지만 아쉽게도 키보드와 마우스에 대해서는 동작하지 않습니다. 즉, RDP로 로그인한 환경에서는 정상적으로 키보드/마우스의 입력이 현재 RDP 세션으로 전달이 되지 않으며, 이때 B 컴퓨터의 물리 PC에 직접 가서 화면을 보면 잠김 화면에서 키보드/마우스의 입력이 이뤄지는 것을 확인할 수 있습니다.

사실 저렇게 USB 장치를 bind/attach하는 것 외에, 예전에 했던 가상 USB 장치를 생성하는 실습도,

USB/IP PROJECT를 이용해 C#으로 USB Keyboard 가상 장치 만들기
; https://www.sysnet.pe.kr/2/0/12216

RDP 환경에서는 동작하지 않습니다. (마찬가지로 물리 PC의 Console 화면에서 동작합니다.)




과거에, RDP 연결은 shadow를 이용해 콘솔 모드로의 연결을 허용한 적이 있습니다.

윈도우 8 - RDP 연결을 이용해 VNC처럼 사용자 로그온 화면을 공유하는 방법
; https://www.sysnet.pe.kr/2/0/1752

하지만, 어느 순간 콘솔 화면으로의 shadow를 막아서 이제는 rdp shadow 연결을 시도하면,

C:\temp> mstsc /v:169.254.135.74 /shadow:1 /prompt

이렇게 오류가 발생합니다.

Shadow Error
The data necessary to complete this operation is not yet available.

// 혹은, /prompt 옵션을 빼면 "Access is denied" 발생

이로 인해 더 이상 RDP로는 console에 로그인할 수는 없습니다. (그런 기능이 필요하다면 "Quick Assist"로 우회해야 합니다.)




그렇다면, 가상 머신은 어떨까요? Hyper-V의 경우 물리 PC가 아니므로 애당초 Console이라는 것이 존재하지 않습니다. 실제로, Hyper-V의 가상 머신에 "Connect..." 메뉴로 연결해 들어가면, 명령행에서 (console이 아닌) rdp 세션임을 알 수 있습니다.

c:\temp> query session
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
 console                                     1  Conn
>rdp-tcp#0         testa                     2  Active
 31c5ce94259d4...                        65536  Listen
 rdp-tcp                                 65537  Listen

하지만, 보는 바와 같이 분명히 "console"에 해당하는 "1"번 세션이 존재하며, Hyper-V는 물리 머신의 콘솔에 접속하는 것과 같은 기능을 제공합니다. 방법은, Hyper-V의 연결 화면에서 다음과 같이 "View" 메뉴의 "Enhanced session" 기능을 비활성화시키면 됩니다.

hyperv_console_login_1.png

저렇게 바꾼 후 로그인을 하면 이제 console 모드로 활성화되는 것을 볼 수 있습니다.

c:\temp> query session
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           testa                     1  Conn
 rdp-tcp#0                                   2  Active
 31c5ce94259d4...                        65536  Listen
 rdp-tcp                                 65537  Listen

이 상태에서, "로컬의 USB 장치를 원격 머신에 제공하는 방법 - usbip-win" 글에서 설명한 실습을 하면, 정상적으로 마우스/키보드 입력이 됩니다. (물론, Enhanced session 모드에서 제공되던 편의 기능들을 console 모드에서는 사용할 수 없어 매우 불편합니다.)

참고로, 매번 저 과정이 번거롭다면 아예 끄는 것도 가능합니다. ^^

How to Turn On or Off Hyper-V Enhanced Session Mode in Windows 10
; https://www.tenforums.com/tutorials/57136-turn-off-hyper-v-enhanced-session-mode-windows-10-a.html




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]



donaricano-btn



[최초 등록일: ]
[최종 수정일: 12/1/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 쓴 사람
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12936정성태1/22/202214.NET Framework: 1138. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 멀티미디어 파일의 메타데이터를 보여주는 예제(metadata.c)파일 다운로드1
12935정성태1/22/202210.NET Framework: 1137. ffmpeg의 파일 해시 예제(ffhash.c)를 C#으로 포팅파일 다운로드1
12934정성태1/22/20228오류 유형: 788. Warning C6262 Function uses '65564' bytes of stack: exceeds /analyze:stacksize '16384'. Consider moving some data to heap.
12933정성태1/21/202226.NET Framework: 1136. C# - ffmpeg(FFmpeg.AutoGen)를 이용해 MP2 오디오 파일 디코딩 예제(decode_audio.c)파일 다운로드1
12932정성태1/20/202265.NET Framework: 1135. C# - ffmpeg(FFmpeg.AutoGen)로 하드웨어 가속기를 이용한 비디오 디코딩 예제(hw_decode.c) [2]파일 다운로드1
12931정성태1/20/202269개발 환경 구성: 632. ASP.NET Core 프로젝트를 AKS/k8s에 올리는 과정
12930정성태1/19/202233개발 환경 구성: 631. AKS/k8s의 Volume에 파일 복사하는 방법
12929정성태1/19/202253개발 환경 구성: 630. AKS/k8s의 Pod에 Volume 연결하는 방법
12928정성태1/18/202245개발 환경 구성: 629. AKS/Kubernetes에서 호스팅 중인 pod에 shell(/bin/bash)로 진입하는 방법
12927정성태1/18/202250개발 환경 구성: 628. AKS 환경에 응용 프로그램 배포 방법
12926정성태1/17/202225오류 유형: 787. AKS - pod 배포 시 ErrImagePull/ImagePullBackOff 오류
12925정성태1/17/202266개발 환경 구성: 627. AKS의 준비 단계 - ACR(Azure Container Registry)에 docker 이미지 배포
12924정성태1/15/2022135.NET Framework: 1134. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 비디오 디코딩 예제(decode_video.c) [2]파일 다운로드1
12923정성태1/15/202273개발 환경 구성: 626. ffmpeg.exe를 사용해 비디오 파일을 MPEG1 포맷으로 변경하는 방법
12922정성태1/14/202275개발 환경 구성: 625. AKS - Azure Kubernetes Service 생성 및 SLO/SLA 변경 방법
12921정성태1/14/202255개발 환경 구성: 624. Docker Desktop에서 별도 서버에 설치한 docker registry에 이미지 올리는 방법
12920정성태1/14/202223오류 유형: 786. Camtasia - An error occurred with the camera: Failed to Add Video Sampler.
12919정성태1/13/202279Windows: 199. Host Network Service (HNS)에 의해서 점유되는 포트
12918정성태1/13/202275Linux: 47. WSL - shell script에서 설정한 환경 변수가 스크립트 실행 후 반영되지 않는 문제
12917정성태1/12/202243오류 유형: 785. C# - The type or namespace name '...' could not be found (are you missing a using directive or an assembly reference?)
12916정성태1/12/202228오류 유형: 784. TFS - One or more source control bindings for this solution are not valid and are listed below.
12915정성태1/11/202258오류 유형: 783. Visual Studio - We didn't find any interpreters
12914정성태1/11/2022164VS.NET IDE: 172. 비주얼 스튜디오 2022의 파이선 개발 환경 지원
12913정성태1/11/2022127.NET Framework: 1133. C# - byte * (바이트 포인터)를 FileStream으로 쓰는 방법
12912정성태1/11/2022117개발 환경 구성: 623. ffmpeg.exe를 사용해 비디오 파일의 이미지를 PGM(Portable Gray Map) 파일 포맷으로 출력하는 방법
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...