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

(시리즈 글이 10개 있습니다.)
Windows: 63. 윈도우 서버 2012 - Hyper-V의 새로운 기능 Live Migration
; https://www.sysnet.pe.kr/2/0/1356

개발 환경 구성: 211. Hyper-V - Generation 2 유형의 VM 생성 시 ISO 부팅이 안된다면?
; https://www.sysnet.pe.kr/2/0/1603

개발 환경 구성: 236. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법
; https://www.sysnet.pe.kr/2/0/1742

개발 환경 구성: 317. Hyper-V 내의 VM에서 다시 Hyper-V를 설치: Nested Virtualization
; https://www.sysnet.pe.kr/2/0/11218

개발 환경 구성: 405. Hyper-V 가상 머신에서 직렬 포트(Serial Port, COM Port) 사용
; https://www.sysnet.pe.kr/2/0/11720

.NET Framework: 798. C# - Hyper-V 가상 머신의 직렬 포트와 연결된 Named Pipe 간의 통신
; https://www.sysnet.pe.kr/2/0/11722

디버깅 기술: 169. Hyper-V의 VM에 대한 메모리 덤프를 뜨는 방법
; https://www.sysnet.pe.kr/2/0/12284

개발 환경 구성: 608. Hyper-V 가상 머신에 Console 모드로 로그인하는 방법
; https://www.sysnet.pe.kr/2/0/12859

개발 환경 구성: 664. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/13246

Windows: 259. Hyper-V Generation 1 유형의 VM을 Generation 2 유형으로 바꾸는 방법
; https://www.sysnet.pe.kr/2/0/13564




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




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







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

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

비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...
NoWriterDateCnt.TitleFile(s)
12577정성태3/26/202111432개발 환경 구성: 559. Docker Desktop for Windows 기반의 Kubernetes 구성 - WSL 2 인스턴스에 kind 도구로 k8s 클러스터 구성
12576정성태3/25/20219268개발 환경 구성: 558. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성 (2) - k8s 서비스 위치
12575정성태3/24/20218264개발 환경 구성: 557. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성
12574정성태3/23/202112413.NET Framework: 1030. C# Socket의 Close/Shutdown 동작 (동기 모드)
12573정성태3/22/202110185개발 환경 구성: 556. WSL 인스턴스 초기 설정 명령어 [1]
12572정성태3/22/20219711.NET Framework: 1029. C# - GC 호출로 인한 메모리 압축(Compaction)을 확인하는 방법파일 다운로드1
12571정성태3/21/20218868오류 유형: 706. WSL 2 기반으로 "Enable Kubernetes" 활성화 시 초기화 실패 [1]
12570정성태3/19/202113174개발 환경 구성: 555. openssl - CA로부터 인증받은 새로운 인증서를 생성하는 방법
12569정성태3/18/202112132개발 환경 구성: 554. WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법
12568정성태3/18/20217624오류 유형: 705. C# 빌드 - Couldn't process file ... due to its being in the Internet or Restricted zone or having the mark of the web on the file.
12567정성태3/17/20219047개발 환경 구성: 553. Docker Desktop for Windows를 위한 k8s 대시보드 활성화 [1]
12566정성태3/17/20219427개발 환경 구성: 552. Kubernetes - kube-apiserver와 REST API 통신하는 방법 (Docker Desktop for Windows 환경)
12565정성태3/17/20216848오류 유형: 704. curl.exe 실행 시 dll not found 오류
12564정성태3/16/20217330VS.NET IDE: 160. 새 프로젝트 창에 C++/CLI 프로젝트 템플릿이 없는 경우
12563정성태3/16/20219280개발 환경 구성: 551. C# - JIRA REST API 사용 정리 (3) jira-oauth-cli 도구를 이용한 키 관리
12562정성태3/15/202110482개발 환경 구성: 550. C# - JIRA REST API 사용 정리 (2) JIRA OAuth 토큰으로 API 사용하는 방법파일 다운로드1
12561정성태3/12/20219092VS.NET IDE: 159. Visual Studio에서 개행(\n, \r) 등의 제어 문자를 치환하는 방법 - 정규 표현식 사용
12560정성태3/11/202110337개발 환경 구성: 549. ssh-keygen으로 생성한 개인키/공개키 파일을 각각 PKCS8/PEM 형식으로 변환하는 방법
12559정성태3/11/20219838.NET Framework: 1028. 닷넷 5 환경의 Web API에 OpenAPI 적용을 위한 NSwag 또는 Swashbuckle 패키지 사용 [2]파일 다운로드1
12558정성태3/10/20219294Windows: 192. Power Automate Desktop (Preview) 소개 - Bitvise SSH Client 제어 [1]
12557정성태3/10/20218004Windows: 191. 탐색기의 보안 탭에 있는 "Object name" 경로에 LEFT-TO-RIGHT EMBEDDING 제어 문자가 포함되는 문제
12556정성태3/9/20217211오류 유형: 703. PowerShell ISE의 Debug / Toggle Breakpoint 메뉴가 비활성 상태인 경우
12555정성태3/8/20219311Windows: 190. C# - 레지스트리에 등록된 DigitalProductId로부터 라이선스 키(Product Key)를 알아내는 방법파일 다운로드2
12554정성태3/8/20219071.NET Framework: 1027. 닷넷 응용 프로그램을 위한 PDB 옵션 - full, pdbonly, portable, embedded
12553정성태3/5/20219589개발 환경 구성: 548. 기존 .NET Framework 프로젝트를 .NET Core/5+ 용으로 변환해 주는 upgrade-assistant, try-convert 도구 소개 [4]
12552정성태3/5/20218774개발 환경 구성: 547. github workflow/actions에서 Visual Studio Marketplace 패키지 등록하는 방법
... 31  32  33  34  35  36  37  38  39  40  41  42  [43]  44  45  ...