From 278150d02cc1e7a069f4f2a7b022e7b172756628 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Sat, 21 Mar 2026 15:29:03 +0900 Subject: [PATCH] =?UTF-8?q?docs(workflow):=2051123=20=EC=9B=90=EA=B2=A9=20?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=EC=8A=A4=ED=8E=98=EC=9D=B4=EC=8A=A4=20?= =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C?= =?UTF-8?q?=EC=9A=B0=20=EB=B0=8F=20=EC=9D=B8=EB=8D=B1=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- ...23_remote_workspace_operations_workflow.md | 148 ++++++++++++++++++ workflow/README.md | 1 + 2 files changed, 149 insertions(+) create mode 100644 workflow/51123_remote_workspace_operations_workflow.md diff --git a/workflow/51123_remote_workspace_operations_workflow.md b/workflow/51123_remote_workspace_operations_workflow.md new file mode 100644 index 0000000..69e8769 --- /dev/null +++ b/workflow/51123_remote_workspace_operations_workflow.md @@ -0,0 +1,148 @@ +--- +tags: [infra, workflow, 51123, remote-operations, workspace, ssh] +--- + +# 51123 Remote Workspace Operations Workflow + +## 상위 원칙 +- [../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md](../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md) +- [../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md](../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md) +- [../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md](../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md) + +## 관련 문서 +- [../journey/research/260309_24서버_실서비스운영전환_리서치.md](../journey/research/260309_24서버_실서비스운영전환_리서치.md) +- [../journey/troubleshooting/260226_51123_SSH_브루트포스_차단_및_fail2ban_교정.md](../journey/troubleshooting/260226_51123_SSH_브루트포스_차단_및_fail2ban_교정.md) +- [../journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_해결.md](../journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_해결.md) + +## 목적 + +- 24 서버에서 23 서버의 원격 작업을 시작할 때 같은 SSH 기준과 검증 순서를 사용합니다. +- 사람과 에이전트가 23 서버 접속 포트 혼선을 반복하지 않도록 단일 workflow로 고정합니다. + +## 적용 범위 + +- 23 서버 SSH 접속 기준 확인 +- 23 서버 기본 식별 확인 +- 23 서버 원격 작업 시작 전 사전 점검 +- 23 서버 접속 실패 시 중단 기준 + +## 기본 원칙 + +- 23 서버 SSH 포트는 `22`로 가정하지 않습니다. +- 23 서버 SSH 기준은 문서 근거상 `192.168.0.100:51123`입니다. +- 포트 근거는 `DEPLOY_SSH_PORT=51123` 문서와 `sshfs ... -p 51123` 운영 기록에 있습니다. +- 이 워크스페이스에서는 fail2ban 리스크 때문에 23 서버 SSH/포트 확인을 반복하지 않습니다. +- 접속 실패가 나면 임의 포트 재시도보다 SSOT와 workflow를 먼저 다시 확인합니다. + +## 표준 흐름 + +### 1. 24 서버 기준값 확인 + +먼저 현재 제어면이 24 서버인지 확인합니다. + +```bash +hostname +grep -n '^HOST_51123=' /home/admin/workspace-config/runtime.env +ls -l /home/admin/.ssh/id_rsa_51123 +``` + +판단 기준: +- 현재 작업 서버는 24 서버다. +- `HOST_51123=192.168.0.100` +- `/home/admin/.ssh/id_rsa_51123` 키 파일이 존재한다. + +### 2. 23 서버 SSH 기준 확인 + +문서와 로컬 키 기준을 같이 확인합니다. + +```bash +rg -n 'DEPLOY_SSH_HOST=|DEPLOY_SSH_PORT=' /home/admin/infra/DOCS /home/admin/robeing --glob '!**/.git/**' +rg -n 'sshfs .* -p 51123|Port 51123' /home/admin/infra/DOCS /home/admin/robeing --glob '!**/.git/**' +``` + +판단 기준: +- `DEPLOY_SSH_HOST=192.168.0.100` +- `DEPLOY_SSH_PORT=51123` +- fail2ban 교정 문서에 `Port 51123`이 명시돼 있다. + +### 3. 23 서버 접속 + +23 서버 접속 명령은 아래를 기준으로 사용합니다. + +```bash +ssh -p 51123 -i /home/admin/.ssh/id_rsa_51123 admin@192.168.0.100 +``` + +원격 접속 직후 확인: + +```bash +hostname +whoami +pwd +``` + +판단 기준: +- `whoami=admin` +- `hostname=robeing-brains` +- 홈 경로 기준 `/home/admin` 사용 가능 + +### 4. 빠른 원격 식별 확인 + +대화형 셸이 필요 없으면 한 줄 점검으로 끝냅니다. + +```bash +ssh -p 51123 -i /home/admin/.ssh/id_rsa_51123 admin@192.168.0.100 'hostname && whoami' +``` + +판단 기준: +- 응답이 `robeing-brains` +- 응답이 `admin` + +### 5. 접속 실패 시 중단 기준 + +접속 실패가 발생하면 아래 원칙으로 멈춥니다. + +```bash +echo 'Do not retry with guessed ports.' +``` + +판단 기준: +- `Connection refused`, `Permission denied`, `Operation timed out` 중 무엇인지 그대로 기록한다. +- 같은 세션에서 `22`, `2200`, `2222` 같은 추측 포트를 연속 시도하지 않는다. +- 추가 확인은 SSOT 문서, 배포 문서, 운영자 확정값을 먼저 본다. + +## 자주 쓰는 작업 패턴 + +### 패턴 1. 23 서버 접속 기준만 빠르게 확인 + +```bash +ssh -p 51123 -i /home/admin/.ssh/id_rsa_51123 admin@192.168.0.100 'hostname && whoami' +``` + +### 패턴 2. 문서 근거만 빠르게 재확인 + +```bash +rg -n 'DEPLOY_SSH_PORT=51123|Port 51123|sshfs .* -p 51123' /home/admin/infra/DOCS /home/admin/robeing --glob '!**/.git/**' +``` + +## 변경 후 검증 + +- workflow 경로가 `infra/DOCS/workflow/`에 있는지 확인합니다. +- README 인덱스에 문서가 노출되는지 확인합니다. +- 문서 내 경로와 링크가 실제 파일을 가리키는지 확인합니다. + +## 금지선 + +- 23 서버 SSH 포트를 `22`로 기본 가정하지 않습니다. +- 접속 실패 뒤 임의 포트 스캔을 하지 않습니다. +- 비밀번호나 비밀값을 workflow 문서에 적지 않습니다. +- 23 서버 SSH 기준과 24 서버 SSH 기준을 섞어 쓰지 않습니다. + +## 기록 원칙 + +- 반복 접속 기준 정리는 `workflow/` +- 실제 접속 실패, fail2ban, 인증 오류는 `journey/troubleshooting/` + +## 한 줄 결론 + +- 23 서버 원격 작업은 `24 기준 확인 -> 23 SSH 기준 확인 -> 51123 포트로 접속 -> 식별 검증 -> 실패 시 추측 재시도 금지` 순서로 고정합니다. diff --git a/workflow/README.md b/workflow/README.md index a23a42a..db04d4c 100644 --- a/workflow/README.md +++ b/workflow/README.md @@ -23,6 +23,7 @@ tags: [infra, workflow, docs, operations] | 문서 | 설명 | |------|------| +| [51123_remote_workspace_operations_workflow.md](./51123_remote_workspace_operations_workflow.md) | 23 서버 SSH 접속 기준과 원격 작업 시작 절차 | | [51123_nas_remote_operations_workflow.md](./51123_nas_remote_operations_workflow.md) | NAS 원격 작업 전체 흐름 (점검·cron·동기화) | | [51123_nas_sync_verification_workflow.md](./51123_nas_sync_verification_workflow.md) | 51123 → 내부 NAS 동기화 점검 상세 절차 | | [51123_github_org_repo_bootstrap_workflow.md](./51123_github_org_repo_bootstrap_workflow.md) | GitHub org 기준 새 프로젝트·다중 레포 생성 |