HM3 / QC1 — 규칙·함정
QC1 = 사무실 회계직원 PC(ASUS H310M-C/HDMI R2.0 · i5-9400F · T-FORCE 250GB). 접속
ssh qc1(main@192.168.0.25, Wi-Fi). 원격작업 원칙(백그라운드·직원 비가시·무방해) = 메모리qc1-remote-work-invisible.
🆕 신규 — 2026-10-23 NAS 엑셀 편집잠금 · sshd 무응답
- [코디] 26.10.23(금) NAS 엑셀
~$잠금파일 165B 의 사용자명main= QC1(회계직원)이 연 것. 판정 =nasget.py get로~$받아 첫 바이트=길이+ASCII 이름. 원격으로 «직원 화면 유지 + 편집잠금만 해제» = Excel COMWorkbook.ChangeFileAccess(3)(Saved=True 일 때만, Session1 필요). 이날은 QC1 22·5985 둘 다 TCP 실패(poinimos01 경유는 22 배너 타임아웃 → sshd 멈춤 추정)라 못 했다 → 현장 처리(직원 저장·닫기 → 페페 편집으로 열기 → 직원 재열기=읽기 전용).
🆕 신규 — 2026-08-27 Win11 업그레이드 (Legacy/MBR → UEFI/GPT)
하드룰
- 🔴Windows Setup(
setup.exe)은 SSH(Session 0)에서 안 돈다. 로그 한 줄 안 남기고 즉사한다(setupact.logmtime 그대로). 원인 = 다운레벨 단계가 GUI 구동(CInstallUI::ShowPage·CompatBlockWindow::OnInitDialog). 해법 = 예약작업으로 Session 1에 밀어넣기 —schtasks /create /tn <평면이름> /tr <wrapper.cmd> /sc once /st 00:00 /rl highest /ru main /it /f후/run. 대화형 로그온 사용자(explorer.exe소유자)와/ru가 일치해야 한다. - 🔴QC1 schtasks 작업이름에
Cody\같은 폴더 경로를 쓰면 「액세스가 거부되었습니다」 한 줄만 뱉고 스크립트 전체가 죽는다. 평면 이름(CodyW11Upgrade)을 쓴다. - 🔴scp로 보낸
.ps1은 UTF-8 BOM 필수. PS 5.1은 BOM 없는 UTF-8을 cp949로 읽어 한글에서 파서가 깨진다(UnexpectedToken).open(...,encoding='utf-8-sig',newline='\r\n'). - 🔴mbr2gpt 변환 후 드라이브 문자가 밀린다. 파티션 번호가 오프셋 순으로 재배열되며 USB
D:→E:, 500MB 시스템예약에D:가 새로 붙는다("Fixing drive letter mapping"). 변환 후 경로를 전부 재확인하고, 시스템예약 문자는diskpart remove letter=D로 뗀다(직원 탐색기에 「시스템 예약」 드라이브로 보인다). \.\PhysicalDrive0은 PS 5.1/.NET Framework 경로정규화 때문에 FileStream으로 못 연다(C:\PhysicalDrive0로 변환됨). 섹터 덤프하려면 P/Invoke CreateFile 필요. 레이아웃 기록만 필요하면Get-Partition+bcdedit /enum all텍스트로 충분.- Legacy 부팅 중엔 ESP를
mountvol S: /S로 못 붙인다("매개 변수가 틀립니다").diskpart→select partition <ESP>→assign letter=S로만 열린다(ESP는 hidden 속성0x8000000000000000).
변환 절차 (검증된 순서)
mbr2gpt /validate /disk:0 /allowFullOS → /convert (SSH/Session 0에서도 정상 동작, 12초) → 🔴즉시 BIOS를 UEFI로 (변환 직후엔 Legacy로 부팅 불가) → 부팅 후 검증 → setup.exe (Session 1).
ASUS H310M-C/HDMI R2.0 BIOS 3종 (Del → F7 Advanced Mode)
- Advanced → PCH-FW Configuration → TPM Device Selection → PTT (Intel fTPM 2.0; MEI 드라이버 정상이면 켤 수 있다)
- Boot → CSM → Launch CSM → Disabled ← 먼저 해야 Secure Boot 메뉴가 열린다
- Boot → Secure Boot → OS Type → Windows UEFI mode (+ State가 Not Active면 Key Management → Install default Secure Boot keys)
- Boot → Boot Option #1 → Windows Boot Manager (USB 아님)
사전 안전장치 (매번)
- 복원지점:
Enable-ComputerRestore -Drive C:\+SystemRestorePointCreationFrequency=0(24h 제한 해제) +Checkpoint-Computer. ⚠복원지점은 데이터 백업이 아니다 — 시스템파일·레지스트리만, 문서·회계자료 제외. - 회계DB는 미니PC
HM3-Sync(30분 주기) 미러가 곧 백업. 변환 전 최신OK라인 확인(C:\dev\hm3\sync.log). - 레이아웃 스냅샷 =
C:/dev/hm3/qc1_win11/layout_pre_mbr2gpt.txt. - 🔴Win11 롤백 10일 —
Windows.old를 디스크정리로 지우면 되돌릴 수 없다.
알아둘 것
- QC1 실측: firmware
Legacy·디스크MBR·TPM 없음 → 3개가 「TPM 2.0 필요 / 보안 부팅 지원 필요」의 실제 원인. CPU(i5-9400F)·RAM(7.9GB)·디스크공간은 처음부터 통과였다. - 에디션 = Win10 Home(Core, KMS 만료 Status 5) → USB의 Win11 Home(index 1) 과 일치. 업그레이드해도 정품인증은 별건(FPP 키 입력 전까지 미인증).
- 🔴얼마에요 = SQL Server 2005 Express — Win11 비지원. 업그레이드 후
MSSQL$IQUESTERP기동 여부를 반드시 확인한다. setuperr.log의TAGREF array insufficient·Plugin not registered [ETWMatchingPlugin]= appraiser 상용 경고, 차단 아님.- 미니PC(192.168.45.48 + Tailscale)는 QC1과 다른 망 — 실측 scp 5.8MB/s. 대용량 회수는 비현실적. QC1은 Session 0라 NAS UNC도 막힌다(메모리
ssh-session0-unc-always-error67).
🆕 정정·추가 — 2026-08-27 저녁: 업그레이드가 SSH를 죽였다
- 🆕[코디] 26.10.23(목) QC1 SSH 여전히 사망(감시 miss 2725회). [페페] 재설치 결정 → 설치묶음 = NAS
\\192.168.0.101\공유폴더\poin\QC1_SSH_reinstall\(OpenSSH-Win64 v10.0.0.0 MSI(MS 서명) +fix_qc1_ssh.ps1개정 = MSI 우선·capability 는 폴백, heal 도 MSI 사본(C:\ProgramData\Cody\OpenSSH-Win64.msi)으로 재설치 · icacls SID 지정 +RUN_ME.cmd자가승격 + README). 원본 =C:\dev\hm3\qc1_win11\(옛판.bak_260827). 실행 후ssh qc1확인 → 감시기가 정품인증 이어감. ✅같은 날 17:50 KST 복구 확인 =ssh qc1키인증(qc1\main) · sshd OpenSSH_10.0p2 Running/Automatic ·Cody-SSH-22·CodySshHeal준비 · AutoAdminLogon=1 · Win11 Home build 26200 LicenseStatus=1(정품) ·MSSQL$IQUESTERPRunning → 감시QC1-Win11-Watchphase=done·작업 «사용 안 함». QC1 Win11 전환 종결. 미러HM3-Sync도 같은 회차(17:52)에 재개 =OK 743MB rows=1,901,217 147s(직전 OK 8.27 17:53 → 57일 공백분 한 번에 반영) · 대시보드 :8794 200.
🔴🔴Win11 인플레이스 업그레이드는 OpenSSH Server 기능(capability)을 통째로 제거한다. 업그레이드 후 재부팅되면 sc query sshd = 오류 1060(미설치), 22번 포트는 Connection refused가 아니라 timeout(드롭). QC1엔 sshd 말고 원격경로가 없어 이 순간 원격 접속이 완전히 끊긴다(i5-9400F는 vPro 미지원 → AMT도 없다).
🔴앞서 심은 CodySshHeal(ssh_heal.cmd = sc config sshd만)은 이 경우를 못 고친다 — 서비스 자체가 없으니 config할 대상이 없다. heal은 반드시 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 부터 하고, 그 다음 자동시작·방화벽·키를 세운다. 정정본 = C:\dev\hm3\qc1_win11\fix_qc1_ssh.ps1(BOM+CRLF, PARSE OK) — 이 스크립트가 heal 작업까지 강화판으로 재등록한다.
main 관리자 비번 없이 원격 복구는 불가(2026-08-27 실측). 일반계정 poin912(비번 poin3133)로 되는 것/안 되는 것:
- ✅ IPC$ 인증 · qc1/Users 공유 읽기 · qc1 공유 쓰기(=C:\qc1) · sc query(SCM 열거)
- ❌ C$/ADMIN$(액세스 거부) · 서비스 설치·기동 · 원격 작업등록(schtasks /s → "지원하지 않는 요청") · WMI(WinRM 5985 QC1에 없음) · 원격 레지스트리(RemoteRegistry 미가동)
- → 서비스를 만들거나 코드를 실행할 방법이 없다. 복구는 main(=로컬 관리자, 첫 진단 ADMIN=True) 자격증명이 반드시 필요.
- 🔑QC1에 파일 전달 = qc1 공유 쓰기가 유일 경로(SSH·C$ 다 막힌 상황에서). \192.168.0.25\qc1\에 poin912로 복사 → 내일 페페가 QC1에서 실행.
전원은 살아있는데 SSH만 죽은 판정법: 미니PC↔QC1은 다른 망이라 ICMP가 Tailscale 서브넷 라우트를 안 탄다(ping 100% 손실이 정상) → TCP로 판정. poinimos01(사무실 같은 LAN, ssh poinimos01)을 점프호스트로 쓰면 로컬 ICMP·포트가 보인다. QC1 445·135 OPEN + 22만 timeout = 「PC 살아있고 sshd만 죽음」.
복구 후 영구화(fix_qc1_ssh.ps1이 하는 것): OpenSSH 재설치 → sshd/ssh-agent 자동시작 → 방화벽 22 영구 → administrators_authorized_keys에 코디 키(main=관리자라 여기) + 엄격 ACL(icacls /inheritance:r) → heal 강화판 재등록 → (선택)Windows 자동로그인으로 session1 상시 확보. 감시기 QC1-Win11-Watch는 SSH 복구 순간 Win11 감지→자동 정품인증하도록 계속 대기시킨다(state phase=unreachable_alerted로 밤사이 무응답 알림만 억제).