From 11e4f00ae6e9387d85776db04d3eaffd4947f221 Mon Sep 17 00:00:00 2001 From: gahusb Date: Fri, 1 May 2026 09:35:56 +0900 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20rsync=20SSH=EC=97=90=20-i=20?= =?UTF-8?q?=ED=82=A4=ED=8C=8C=EC=9D=BC=20=EB=AA=85=EC=8B=9C=20(macOS=20Key?= =?UTF-8?q?chain=20=EC=9A=B0=ED=9A=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit macOS에서 rsync 서브프로세스는 Keychain 키를 자동 로드하지 못해 비밀번호 프롬프트로 fallback됨. -i ~/.ssh/id_rsa 명시로 해결. - BatchMode=yes: 비밀번호 프롬프트 차단 (명확한 에러 반환) - StrictHostKeyChecking=accept-new: 최초 연결 host key 자동 수락 - NAS_SSH_KEY 환경변수로 다른 키 파일 지정 가능 Co-Authored-By: Claude Sonnet 4.6 --- scripts/deploy-nas.cjs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/deploy-nas.cjs b/scripts/deploy-nas.cjs index ef4edd7..751ba60 100644 --- a/scripts/deploy-nas.cjs +++ b/scripts/deploy-nas.cjs @@ -1,5 +1,6 @@ const { execSync } = require("child_process"); const fs = require("fs"); +const os = require("os"); const path = require("path"); // Load .env.local from project root if present (persists NAS_SSH_TARGET etc.) @@ -55,7 +56,11 @@ if (isWin) { process.exit(1); } - const sshCmd = cleanPort ? `ssh -p ${cleanPort}` : "ssh"; + // macOS Keychain은 서브프로세스(rsync)에서 SSH 키를 자동 로드하지 못함 → -i 명시 + const keyFile = process.env.NAS_SSH_KEY || path.join(os.homedir(), ".ssh", "id_rsa"); + const portOpt = cleanPort ? `-p ${cleanPort}` : ""; + const sshCmd = `ssh ${portOpt} -i "${keyFile}" -o StrictHostKeyChecking=accept-new -o BatchMode=yes`.trim(); + console.log(`Deploying via SSH → ${cleanTarget}:${cleanPath}`); console.log(`SSH command: ${sshCmd}`); execSync(