8.7 KB · 수정 2026-10-23 17:54
목차

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 무응답

🆕 신규 — 2026-08-27 Win11 업그레이드 (Legacy/MBR → UEFI/GPT)

하드룰

  1. 🔴Windows Setup(setup.exe)은 SSH(Session 0)에서 안 돈다. 로그 한 줄 안 남기고 즉사한다(setupact.log mtime 그대로). 원인 = 다운레벨 단계가 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 가 일치해야 한다.
  2. 🔴QC1 schtasks 작업이름에 Cody\ 같은 폴더 경로를 쓰면 「액세스가 거부되었습니다」 한 줄만 뱉고 스크립트 전체가 죽는다. 평면 이름(CodyW11Upgrade)을 쓴다.
  3. 🔴scp로 보낸 .ps1 은 UTF-8 BOM 필수. PS 5.1은 BOM 없는 UTF-8을 cp949로 읽어 한글에서 파서가 깨진다(UnexpectedToken). open(...,encoding='utf-8-sig',newline='\r\n').
  4. 🔴mbr2gpt 변환 후 드라이브 문자가 밀린다. 파티션 번호가 오프셋 순으로 재배열되며 USB D:→E:, 500MB 시스템예약에 D: 가 새로 붙는다("Fixing drive letter mapping"). 변환 후 경로를 전부 재확인하고, 시스템예약 문자는 diskpart remove letter=D 로 뗀다(직원 탐색기에 「시스템 예약」 드라이브로 보인다).
  5. \.\PhysicalDrive0 은 PS 5.1/.NET Framework 경로정규화 때문에 FileStream으로 못 연다(C:\PhysicalDrive0 로 변환됨). 섹터 덤프하려면 P/Invoke CreateFile 필요. 레이아웃 기록만 필요하면 Get-Partition + bcdedit /enum all 텍스트로 충분.
  6. 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 아님)

사전 안전장치 (매번)

알아둘 것

🆕 정정·추가 — 2026-08-27 저녁: 업그레이드가 SSH를 죽였다

🔴🔴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로 밤사이 무응답 알림만 억제).