VMRC "MKS에 연결할 수 없음: ticketType" 오류 완전 정복기
vSphere 8.0 환경에서 VMware Remote Console(VMRC) 콘솔이 안 열리는 문제를 인증서 정리부터 옵션값 수정까지 끝까지 추적한 기록.
TL;DR (결론부터)
- 증상: VMRC로 VM 콘솔 접속 시
MKS에 연결할 수 없음: 지정된 매개 변수가 올바르지 않음: ticketType. - 진짜 원인: vCenter 8.0부터 구형
mks티켓 타입이 폐지되고webmks로 대체됨. 그런데 VMRC 설정이 구형 mks를 우선하도록 되어 있었음. - 해결:
preferences.ini에 아래 두 줄 설정pref.preferWebMKS = "TRUE" pref.preferWebRemoteDevice = "TRUE" - 근거: Broadcom KB 313645
⚠️ 이 글은 삽질(인증서 의심 → 버전 의심 → VMRC 재설치)까지 포함한 과정 기록입니다. 바로 답만 필요하면 위 TL;DR로 충분합니다.
0. 환경
| 구성요소 | 버전 |
|---|---|
| vCenter Server | 8.0 U2c (8.0.2.00300, build 23504390) |
| ESXi 호스트 | 8.0 U2 (8.0.2, build 23305546) |
| VMRC (초기) | 12.0.5 build 22744838 |
| 클라이언트 OS | Windows 10 Pro (19045) |
1. 1차 증상 — 인증서 오류로 VMRC 멈춤
처음엔 VMRC 실행 시 인증서 경고에서 프로그램이 멈추는 현상이었다. Windows 인증서 저장소를 뒤져보니 옛 vCenter/ESXi 자체서명 인증서가 여러 저장소에 박혀 있었다.
Get-ChildItem Cert:\CurrentUser\Root, Cert:\CurrentUser\CA,
Cert:\LocalMachine\Root, Cert:\LocalMachine\CA -Recurse |
Where-Object { $_.Issuer -match 'VMware' } |
Select-Object PSParentPath, Subject, Thumbprint
발견된 stale 인증서 (CN=CA, OU=VMware Engineering):
CurrentUser\Root,CurrentUser\CA,LocalMachine\Root,LocalMachine\CA4곳에 중복
백업 후 삭제
인증서는 지우기 전 반드시 백업.
.cer로 내보내두면 더블클릭으로 복구 가능.
# 백업
$backupDir = "C:\cert_backup_vmware"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
Get-ChildItem Cert:\CurrentUser\Root, Cert:\CurrentUser\CA,
Cert:\LocalMachine\Root, Cert:\LocalMachine\CA |
Where-Object { $_.Issuer -match 'VMware' } |
ForEach-Object { Export-Certificate -Cert $_ -FilePath "$backupDir\$($_.Thumbprint).cer" }
# 삭제
$stores = 'Cert:\CurrentUser\Root','Cert:\CurrentUser\CA',
'Cert:\LocalMachine\Root','Cert:\LocalMachine\CA'
foreach($s in $stores){
Get-ChildItem $s | Where-Object { $_.Issuer -match 'VMware' } |
ForEach-Object { Remove-Item $_.PSPath -Force }
}
💡
CurrentUser\Root에서 삭제하면 "UI is not allowed" 경고가 뜰 수 있는데, 관리자 PowerShell이면 실제로는 삭제된다. 삭제 후 재조회로 확인할 것.
덤으로 발견한 설정 파일 손상
%APPDATA%\VMware\preferences.ini 마지막 줄이 곡선따옴표(" ") 로 깨져 있었다.
pref.preferWebMKS = "FALSE" # ← 곡선따옴표라 파서가 오작동 가능
표준 따옴표로 교정.
$f = "$env:APPDATA\VMware\preferences.ini"
$raw = Get-Content $f -Raw
($raw -replace [char]0x201C,'"' -replace [char]0x201D,'"') |
Set-Content $f -NoNewline -Encoding UTF8
→ 인증서 멈춤 현상은 해결. 하지만 곧 진짜 빌런이 등장한다.
2. 2차 증상 — ticketType 오류
콘솔을 다시 띄우니 이번엔:
MKS에 연결할 수 없음: 지정된 매개 변수가 올바르지 않음: ticketType.
VMRC 로그 분석
%LOCALAPPDATA%\Temp\vmware-<user>\vmware-vmrc-*.log
GVmomi: Connected to server: VMware vCenter Server 8.0.2 (VC/ESX server)
HostMgr::OpenHost: opening host with MOID "host-1006"
HostInfoVIM::AttachToChildVMs: Failed to get inventory info for host "host-1006".
VMTicketingVIM::DoAcquireTicket - issuing MKS_TICKET ticket acquisition request ← 주목
CUIMKS: cui::MKS::OnAcquireAbort: 지정된 매개 변수가 올바르지 않음: ticketType
핵심은 issuing MKS_TICKET — VMRC가 구형 MKS 티켓을 요청하고 있다는 점이다.
3. 삽질 1 — "VMRC 버전이 낮아서?"
가장 흔한 조언이 "VMRC를 최신으로 올려라"였다. 그래서 VMRC 12.0.5 → 13.0 업그레이드를 진행.
무인설치에서 만난 함정: 1603 오류
VMRC 13.0을 silent 설치하니 계속 exit code 1603. MSI 로그를 까보니:
VM_ValidateEULAAccepted → 반환 값 3
"사용자가 명령줄에서 EULAS_AGREED=1을 전달하여 라이센스 계약에 동의하지 않았습니다."
🔑 VMRC 13.0부터 무인설치 시
EULAS_AGREED=1(라이선스 동의) 속성이 필수. 12.x엔 없던 조건이라 처음엔 안 보인다.
# exe에서 추출한 MSI를 직접 설치 (EULA 동의 포함)
msiexec /i "VMware-VMRC-13.0.0.0.24645870.msi" /qn /norestart EULAS_AGREED=1
또는 exe 래퍼로:
Start-Process "VMware-VMRC-13.0.0.0.24645870.exe" `
-ArgumentList '/s','/v"/qn EULAS_AGREED=1"' -Wait
→ 설치 성공 (VMRC 13.0.0.0 build-24645870 확인).
그런데도 같은 오류
VMRC 13.0으로도 ticketType 오류 그대로. 로그를 다시 보니 13.0조차 여전히 issuing MKS_TICKET. → 버전 문제가 아니다.
4. 삽질 2 — "vCenter와 ESXi 버전 스큐?"
vCenter(8.0.2)가 ESXi(처음엔 8.0.3으로 잘못 알고 있었음)보다 낮아서 MKS 티켓 방식이 안 맞는 줄 알았다. vCenter REST/SOAP API로 실제 버전을 직접 조회:
# REST 세션
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("$user:$pass"))
$token = Invoke-RestMethod -Method Post -Uri "https://<vcenter>/api/session" `
-Headers @{ Authorization = "Basic $b64" } -SkipCertificateCheck
# 호스트 목록
Invoke-RestMethod -Uri "https://<vcenter>/api/vcenter/host" `
-Headers @{ 'vmware-api-session-id' = $token } -SkipCertificateCheck
SOAP RetrieveProperties로 각 호스트 빌드까지 확인한 결과:
| 호스트 | 버전 | build |
|---|---|---|
| host-1006 | 8.0.2 | 23305546 |
| host-1037 | 8.0.2 | 23305546 |
| host-1054 | 8.0.2 | 22380479 |
| host-1079 | 8.0.2 | 22380479 |
전부 8.0.2. vCenter도 8.0.2. → 버전 스큐 아님. (호스트 상태도 전부 green / connected, VM도 poweredOn)
교훈: 추측으로 가설 세우지 말고 API로 사실부터 확정할 것.
5. 진짜 원인 — vCenter 8.0의 티켓 타입 변경
오류 문구 그대로 검색해서 Broadcom KB 313645를 찾았다.
vCenter Server는 8.0.0부터 구형
mks티켓 타입 지원을 종료하고webmks포맷을 채택했다.
즉:
- vCenter 8.0 →
webmks티켓만 발급 - VMRC가
mks티켓을 요청 → vCenter가ticketType파라미터를 거부
그런데 왜 VMRC는 계속 mks를 요청했나? → preferences.ini의 설정 때문.
pref.preferWebMKS = "FALSE" # ← "구형 mks 우선"
1차 작업 때 곡선따옴표만 고치고 값은 FALSE로 유지했던 게 화근이었다. (이게 디폴트였음)
6. 최종 해결
KB 313645의 vCenter 8.0.x용 권장 설정 적용:
pref.preferWebMKS = "TRUE"
pref.preferWebRemoteDevice = "TRUE"
# VMRC 완전 종료 (종료 시 preferences를 덮어쓰므로 반드시 먼저)
Get-Process vmrc -ErrorAction SilentlyContinue | Stop-Process -Force
$f = "$env:APPDATA\VMware\preferences.ini"
Copy-Item $f "$f.bak" -Force
$out = foreach($l in (Get-Content $f)){
if($l -match '^\s*pref\.preferWebMKS\s*='){ 'pref.preferWebMKS = "TRUE"' } else { $l }
}
if(-not ($out -match 'pref\.preferWebRemoteDevice')){
$out += 'pref.preferWebRemoteDevice = "TRUE"'
}
Set-Content $f -Value $out -Encoding UTF8
| 버전별 권장값 | preferWebMKS | preferWebRemoteDevice |
|---|---|---|
| vCenter 8.0.x | "TRUE" |
"TRUE" |
| vCenter 7.0.x | "FALSE" |
"FALSE" |
VMRC를 새로 띄우면 이제 webmks 티켓을 요청 → 콘솔 정상 접속. ✅
7. 정리 — 무엇을 배웠나
ticketType오류 = vCenter 8.0 + 구형 mks 티켓 요청의 조합. 핵심 해결은 VMRC의preferWebMKS = "TRUE".- VMRC 버전 업그레이드는 권장이지만 그것만으로 안 되는 경우가 있다. 설정값이 우선.
- VMRC 13.0 무인설치엔
EULAS_AGREED=1필수 (없으면 1603). - 인증서 멈춤과 ticketType 오류는 별개 문제. 인증서는 백업 후 정리.
- 트러블슈팅은 로그 → API로 사실 확정 → 정확한 오류문구 검색 순서. 버전 스큐 같은 그럴듯한 가설에 빠지지 말 것.
참고 자료
- Broadcom KB 313645 — VMRC Console Error "Unable to connect to the MKS ... ticketType"
- Broadcom KB 318886 — Unable to connect to Remote Console for machines provisioned in vCenter 8.0.0 and above
- Download VMware Remote Console (VMRC) — Broadcom KB 368995
환경 정보의 내부 IP/계정/비밀번호는 공개 게시 전 반드시 마스킹하세요.
'Programming > 기본 (Baisc)' 카테고리의 다른 글
| 짧은 글자 도메인 판매 | 국내·해외 프리미엄 도메인 및 맞춤 수집 가능 (0) | 2026.06.15 |
|---|---|
| 네이버 SEO 캐러셀 이미지 노출 전문 업체 – 검색 상위노출의 핵심 전략 (0) | 2026.03.25 |
| HAProxy 3.2 + NGINX Unit으로 구축한 고가용성 웹 인프라 아키텍처 (0) | 2026.03.24 |
| MariaDB Galera Cluster + MaxScale을 활용한 고가용성 데이터베이스 구축 (0) | 2026.03.24 |
| Java Spring Boot DNS 서버에서 RFC 2136 Dynamic DNS UPDATE 프로토콜 완전 구현기 (0) | 2026.02.13 |