대형 기능 · 원격 오크텀 Tailscale
원격 오크텀
집 PC와 회사 PC의 오크텀을 Tailscale 위에서 짝지어, 한쪽 PC의 claude·codex가 다른 쪽 PC의 에이전트와 메시지와 파일(스크린샷·로그·큰 파일)을 주고받게 합니다. Windows와 macOS를 서로 섞어 쓸 수 있습니다.
무엇을 하는가
- 받는 PC(호스트)와 하는 PC(클라이언트)가 있습니다. 모든 오크텀이 둘 다 될 수 있고, 방향마다 따로 짝짓습니다.
- 「이 PC로 원격 접속 받기」는 기본 꺼짐입니다. PC마다 직접 켜야 문이 열립니다.
- 켜면 Tailscale 주소에만 연결을 받습니다(포트
9620). 사내망·LAN·인터넷에는 열리지 않고, Tailscale을 못 찾으면 켜지지 않습니다. - 짝지은 PC의 에이전트끼리는
chat_who·chat_send·chat_inbox(메시지),chat_send_file(파일)을 씁니다. 에이전트 채팅과 같은 도구입니다.
준비 1 — Tailscale 설치
-
두 PC에 Tailscale 설치·로그인
두 PC 모두 tailscale.com/download에서 설치하고 같은 tailnet에 로그인합니다. 각 PC에
회사-win,home-mac같은 Tailscale 이름이 붙습니다. 짝지을 때 이 이름(또는100.x.y.z주소)을 씁니다.
준비 2 — Tailnet Lock 켜기 (권장)
Tailscale은 PC를 tailnet에 들이는 일을 Tailscale 서버가 도와줍니다. 그 서버나 내 Tailscale 계정이 뚫리면 공격자가 내 tailnet에 가짜 PC를 끼워 넣을 수 있습니다. Tailnet Lock을 켜면 새 PC는 이미 믿는 내 PC가 서명해 줘야만 tailnet에 들어올 수 있어서, Tailscale 서버나 계정이 뚫려도 가짜 PC가 들어오지 못합니다.
오크텀은 Tailscale 위에 자체 인증을 한 번 더 두므로(짝지은 기기 키만 통과) Tailnet Lock이 없다고 바로 뚫리는 것은 아닙니다. 그래도 겹겹이 막는 것이 목적이라, 회사 PC를 받는 쪽으로 켜는 분은 Tailnet Lock을 켜 두기를 권합니다. 켜는 방법은 Tailscale 문서의 Tailnet Lock을 따르세요.
준비 3 — ACL로 범위 좁히기
Tailscale의 접근 규칙(ACL)으로 집 PC가 회사 PC의 오크텀 포트 하나에만 닿게 좁힐 수 있습니다. PC에 태그(tag:home, tag:work)를 붙이고 태그끼리의 규칙을 씁니다. 태그는 관리 콘솔에서 PC에 붙이는 이름표입니다. 이름은 마음대로 정해도 됩니다.
{
"tagOwners": { "tag:home": ["autogroup:admin"], "tag:work": ["autogroup:admin"] },
"acls": [
{ "action": "accept", "src": ["tag:home"], "dst": ["tag:work:9620"] }
]
}위 예시는 tag:home PC가 tag:work PC의 9620 포트로만 갈 수 있게 합니다. 핵심 한 줄은 {"src":["tag:home"],"dst":["tag:work:9620"]}입니다. 포트는 정식 빌드에서 9620입니다(개발 빌드는 9620에 인스턴스 번호가 더해집니다). 양방향으로 쓰려면 반대 방향 규칙을 한 줄 더 둡니다. 위 규칙은 기존 acls 배열에 한 줄을 더하는 것입니다. 기본 허용 규칙을 통째로 바꾸면 tailnet의 다른 통신이 끊깁니다. 또 PC에 태그를 붙이면 그 PC는 사용자가 아니라 태그가 소유하게 되어 다시 인증해야 할 수 있습니다.
짝짓기
짝짓기는 받는 PC 앞에 있는 사람이 직접 승인할 때만 됩니다. 원격에서 새 기기를 짝짓는 길은 없습니다.
-
받는 PC: 받기 켜고 짝짓기 창 열기
설정 → 원격 접속 → 「이 PC로 원격 접속 받기」를 켭니다(Tailscale 주소가 표시됩니다). 「새 기기 짝짓기」를 누르고 Touch ID / Windows Hello로 본인 확인을 하면 2분 동안, 요청 1번만 받는 창이 열립니다.
-
하는 PC: 원격 PC 추가
설정 → 원격 접속 → 「원격 PC 추가」에 받는 PC의 Tailscale 이름(또는 주소)과 알아보기 쉬운 표시 이름(예:
회사-Win)을 적고 요청합니다. -
6자리 숫자를 비교하고 승인
두 PC 화면에 같은 6자리 숫자가 뜹니다. 받는 PC에서 두 숫자가 같을 때만 「승인」을 누릅니다. 다르면 누르지 마세요 — 중간에 누가 끼어들었다는 뜻일 수 있습니다. 승인하면 양쪽 「등록 기기」 목록에 서로가 생깁니다.
등록 기기는 받는 PC의 설정에서 언제든 삭제할 수 있고, 삭제하면 그 기기의 현재 연결도 바로 끊깁니다.
메시지 — 허락은 보내는 쪽에서
- 하는 PC의 에이전트가
chat_who를 부르면 짝지은 PC의 탭이회사-Win / claude — 탭 이름처럼 나옵니다. - 처음 메시지를 보낼 때 보내는 PC(사람이 있는 PC)에서 허용 여부를 묻습니다. 받는 PC에는 허용창이 뜨지 않고 기록과 알림만 남습니다. 허용은 (내 탭, 상대 탭) 쌍마다 따로이고 앱을 다시 켜도 유지되며, 어느 쪽 탭이 닫히거나 기기가 삭제되면 사라집니다.
- 대화는 하는 PC 쪽에서만 시작합니다. 받는 PC의 에이전트는 허용된 대화에만 답장할 수 있고, 먼저 말을 걸 수 없습니다. 받는 PC의 에이전트가 속아 넘어가도 하는 PC의 에이전트를 부릴 수 없게 하려는 장치입니다. 허용을 묻는 것은 보내는 쪽(하는 PC)의 사람이고, 거기서 거절하면 그 탭을 닫았다 열 때까지 최종입니다.
- 받는 탭에는
from: 회사-Win / claude처럼 출처 PC 이름이 붙어 한 줄로 입력됩니다. 500자·제어문자 제거 같은 규칙은 로컬 채팅과 같습니다. - 상대가 오프라인이면 하는 PC → 받는 PC 메시지는 쌓지 않고 바로 오류(
peer_offline)를 돌려줍니다. 반대로 받는 PC의 답장은 보관했다가(기기당 최대 500건·7일) 하는 PC가 다시 연결되면 한 번씩 전달합니다. - 메시지는 기기 쌍마다 분당 20건으로 제한됩니다(설정에서 바꿈).
파일
- 에이전트가
chat_send_file로 파일 하나를 짝지은 PC로만 보냅니다(폴더 통째 전송·외부 주소 없음). 이름·크기·sha256이 받는 에이전트에게 한 줄로 전달됩니다. - 받은 파일은 받은편지함 폴더에만 저장됩니다: 데이터 폴더의
remote-inbox/<기기 이름>/<날짜>/. 자동으로 열리거나 실행되지 않고, 에이전트에게는 경로만 알려 줍니다. macOS는 「인터넷에서 다운로드한 파일」 경고, Windows는 「이 파일은 다른 컴퓨터에서 왔으므로…」 표시가 붙습니다. - 조각으로 보내고 끊기면 이어 받으며, 끝나면 sha256으로 확인합니다. 받는 PC의 디스크 여유가 부족하면 시작 전에 거절합니다.
- 100 MiB를 넘는 파일은 사람이 있는 PC에서 한 번 확인합니다. 파일 하나의 한도는 기본 2 GiB(설정에서 낮출 수 있음)입니다.
- 민감한 파일은 기본으로 막습니다.
~/.ssh, 클라우드·도구 자격 증명(~/.aws·~/.kube등), 에이전트 설정과 토큰(~/.claude·~/.codex등), 브라우저 프로필, 오크텀 데이터 폴더,.env·*.pem·id_*같은 비밀값 파일이 해당합니다. 심볼릭 링크는 실제 경로를 따라가서 검사하므로 링크로 돌려서 보낼 수 없습니다.
원격 공간에서 회사 PC 파일·Git·검색·할 일·노트 보기
받는 PC(예: 회사 PC)에서 설정 → 원격 접속 → 해당 기기의 「터미널 허용」을 켜면(본인 확인 필요), 하는 PC(집 PC)의 타이틀바에 그 PC의 원격 공간이 생깁니다. 원격 공간을 보는 동안에는 터미널만이 아니라 사이드바와 파일 보기도 회사 PC를 가리킵니다. 별도로 켤 항목은 없고, 「터미널 허용」에 파일 보기·고치기, Git 변경 보기, 검색, 할 일·노트가 함께 들어 있습니다.
- 사이드바가 저절로 바뀝니다. 원격 공간을 열면 탐색기·Git·검색·할 일이 그 회사 PC 공간의 프로젝트 폴더를 보여 주고, 사이드바 위에 「회사-Win · 공간 이름」처럼 어느 PC인지 늘 표시됩니다. 로컬 공간으로 돌아오면 집 PC 상태(펼친 폴더 등) 그대로 돌아옵니다. 세션 목록은 바꾸지 않습니다(집 PC 그대로). 프로젝트가 여럿이면 기본은 회사 PC에서 그 공간의 활성 프로젝트이고, 사이드바 머리에서 다른 프로젝트를 고를 수 있습니다(고른 값은 집 PC에만 남고 회사 PC에는 영향이 없습니다).
- 파일은 「집 PC에서만」 탭으로 열립니다. 탐색기·Git 변경 목록·검색 결과에서 파일을 누르면, 지금 보고 있는 원격 패널의 탭 줄에 점선·노란색 탭이 생깁니다. 터미널 탭과 번갈아 볼 수 있고, 회사 PC 화면에는 아무 탭도 생기지 않습니다(회사 PC 앞 사람에게 보이지 않습니다). 이 탭은 집 PC에만 있어서 앱을 다시 켜면 사라지고, 나누기·다른 패널로 옮기기·이름 바꾸기는 되지 않습니다. 탭을 닫을 때는
⌘W/Ctrl+W가 보이는 「집 PC에서만」 탭을 닫습니다(회사 PC 터미널 탭은 닫지 않습니다). - 마크다운·HTML 보고서. 마크다운은 읽기 화면으로 열리고(상대 경로 이미지·링크가 회사 PC 같은 프로젝트에서 보입니다), 👁로 편집 모드로 바꿀 수 있습니다. HTML 보고서는 렌더링된 화면으로 보입니다 — 같은 폴더의 CSS·스크립트·이미지가 함께 나옵니다. 보고서는 격리된 칸 안에서 열려 오크텀 내부 기능이나 프로젝트 밖 파일에 닿지 못하고, 외부 네트워크 요청도 막힙니다(CSS 안의
url()로 부르는 이미지 같은 일부 자원은 비어 보일 수 있습니다). 코드·텍스트는 평소의 편집기로 열립니다. - 가끔 고쳐서 저장할 수 있습니다. 저장은 회사 PC의 파일에 씁니다. 안전장치가 있습니다.
- 회사 PC 편집기에 같은 파일의 저장 안 한 수정이 있으면 저장이 거절되고 「회사 PC 편집기에 저장 안 한 수정이 있습니다」가 뜹니다(덮어쓰기 선택지는 없습니다).
- 파일을 연 뒤 회사 PC에서 그새 바뀌었으면 「회사 PC에서 그새 바뀌었습니다」 — 다시 불러오기 또는 그래도 덮어쓰기를 고릅니다.
- 고치는 동안 회사 PC에서 바뀌면 탭에 「회사 PC에서 바뀜」 표시가 붙습니다. 고치지 않은 파일은 5초마다 새 내용으로 저절로 갱신됩니다.
- 약 900 KB가 넘는 파일은 읽기 전용으로만 열립니다. 새 파일을 만드는 것은 안 되고 기존 파일만 저장됩니다. 연결이 끊기면 열린 내용은 그대로 보이되 읽기 전용이 되고, 다시 붙으면 풀립니다.
- Git은 보기만. 회사 PC 프로젝트의 바뀐 파일 목록(스테이지·작업 트리)과 파일별 차이를 볼 수 있고, 차이는 「집 PC에서만」 탭으로 열립니다. 커밋·스테이지·푸시·되돌리기·브랜치 전환·Git 그래프는 없습니다. 프로젝트 폴더 밖의 변경(더 큰 저장소의 다른 폴더)은 보이지 않습니다.
- 검색. 파일 내용 찾기(
Ctrl+Shift+F)가 회사 PC 프로젝트를 검색하고, 결과를 누르면 그 줄에서 「집 PC에서만」 탭이 열립니다. - 할 일. 회사 PC 공간의 할 일 보드를 보고, 추가와 열 사이 옮기기(완료 포함)를 할 수 있습니다. 회사 PC 보드에도 바로 반영되고, 회사 쪽(에이전트 포함) 변경은 몇 초 안에 집 PC 보드에 나타납니다. 할 일 삭제·수정은 없습니다.
- 노트. 원격 공간을 보는 동안 떠 있는 노트 창이 회사 PC 노트를 보여 주고, 창 위의 「회사-Win 노트 / 이 PC 노트」 전환으로 집 PC 노트와 오갑니다(기본은 회사 PC). 목록에서 노트를 열면 「집 PC에서만」 탭으로 열리고, 새로 쓰기와 메모(텍스트) 고치기가 됩니다. 그림·시퀀스·순서도 노트는 보기만 합니다. 회사 PC에서 그 노트를 고치는 중이면 저장이 거절됩니다. 노트 삭제는 없습니다.
- CPU·메모리·GPU. 원격 공간을 보는 동안 하단바 게이지가 회사 PC 값으로 바뀌고 앞에 회사 PC 이름이 붙습니다(2초마다 갱신). 로컬 공간으로 돌아오면 이 PC 값입니다. 회사 PC가 이 기능 이전 버전이면 게이지가 숨습니다.
- 이미지 붙여넣기. 원격 터미널 탭에서 이미지(스크린샷 등)를 ⌘V / Ctrl+V로 붙여넣으면 이미지가 회사 PC로 전송되고, 입력칸에는 회사 PC에 저장된 파일 경로가 붙습니다. Codex·Claude가 그 경로로 이미지를 읽습니다. 회사 PC 클립보드는 건드리지 않으며, 20 MB까지 보낼 수 있습니다.
할 수 없는 것: Git 쓰기(커밋·푸시 등), 노트·할 일 삭제, 할 일 수정, 파일·폴더 만들기·이름 바꾸기·지우기·끌어 옮기기, 파일 내려받기, 회사 PC 터미널 배치에 편집기 탭 만들기. 파일 전달은 위의 「파일」(chat_send_file)을 쓰세요.
- 민감한 파일은 여기서도 막힙니다.
.ssh·.aws·.kube·.docker·.gnupg같은 자격 증명 폴더와 비밀값 파일은 프로젝트가 홈 밖에 있어도 목록·검색·열기에서 빠집니다. 프로젝트 폴더 밖을 가리키는 심볼릭 링크는 따라가지 않습니다. - 회사 PC 화면에는 표시가 없습니다. 집에서 보거나 고친 기록은 감사 기록(동작 종류와 프로젝트 기준 경로만 — 파일 내용·검색어·노트·할 일 본문은 남기지 않음)에만 남습니다. 단, 할 일·노트·파일 변경 자체는 회사 PC의 보드·목록·파일에 반영됩니다.
- 회사 PC가 이전 빌드이면 「회사 PC를 업데이트하면 파일을 볼 수 있습니다」가 뜨고 터미널은 평소처럼 됩니다(양쪽을 업데이트하면 됩니다). 연결이 끊기면 열린 내용은 읽기 전용으로 남습니다.
본인 확인 — 12시간과 잠자기
- 하는 PC에서 연결을 시작할 때마다 Touch ID / Windows Hello로 본인 확인을 합니다. 에이전트가 이 창을 대신 띄우는 일은 없습니다.
- 확인은 12시간 유효합니다. PC가 잠자기에 들어가도 만료됩니다(깨어난 뒤 다시 확인). 화면 잠금은 만료 사유가 아닙니다 — 자리를 비워도 에이전트 일은 계속됩니다.
- 만료되면 연결이 끊기고 상태바에 「본인 확인 필요」가 뜹니다. 그때 에이전트가
chat_send를 하면auth_required오류만 돌아옵니다. 상태바를 눌러 확인하면 다시 연결됩니다. - 확인이 유효한 동안 네트워크가 잠깐 끊겼다 돌아오면 확인 없이 자동으로 다시 붙습니다.
받는 PC의 잠금 화면
하는 PC가 연결되어 있는 동안 받는 PC의 오크텀 화면 전체가 「원격 사용 중」 잠금 화면으로 가려집니다(메시지가 터미널에 타이핑되는 모습이 사무실 사람에게 보이지 않게 합니다). 인앱 브라우저 화면도 함께 가려집니다.
- 잠금 화면 아래에 「집-Mac 연결됨」처럼 연결된 기기 이름과 [모두 끊기] 버튼이 있습니다. 끊기는 본인 확인 없이 바로 됩니다. 끊으면 하는 PC는 스스로 다시 붙지 않고, 받는 PC는 60초 동안 그 기기를 받지 않습니다.
- 받는 PC 앞에서 계속 쓰려면 [이 PC에서 계속 쓰기] → 이 PC에서 본인 확인. 풀어도 원격 연결은 유지됩니다.
- 잠금 중에는 앱을 끌 수 없습니다(⌘Q·창 닫기 무동작). 풀거나 「모두 끊기」를 먼저 하세요.
- 두 PC 앞에 다 사람이 있는 옆자리 테스트 같은 때를 위해, 기기별 「연결 중 화면 잠금」을 끌 수 있습니다. 끄는 일은 받는 PC에서만, 본인 확인 후에만 됩니다.
설정에서 볼 수 있는 것
설정 → 원격 접속에서 받기 켜기, 새 기기 짝짓기, 등록 기기 목록(마지막 연결·삭제), 원격 PC 추가, 메시지 속도·파일 크기 한도, 모든 연결 끊기, 감사 기록 보기를 합니다. 감사 기록에는 짝짓기·연결·끊김·본인 확인·메시지(본문은 저장하지 않음, 길이만)·파일(이름·크기·해시)·거절된 연결 시도가 30일 남습니다. 연결이 생기면 상태바에도 표시됩니다.
문제 해결 — 사내 VPN을 켜면 연결이 안 될 때
일부 사내 VPN(실측: Windows의 SECUI VPN)은 켜질 때 Windows 경로 표를 다시 쓰면서 Tailscale 경로(100.x)를 지웁니다. 그러면 Tailscale 앱에는 「연결됨」으로 보여도 상대 PC에 닿지 않습니다.
- 증상: 원격 PC 추가·연결이 시간 초과로 끝나고,
ping <상대 100.x 주소>도 응답이 없습니다. - 확인: PowerShell에서
Find-NetRoute -RemoteIPAddress <상대 100.x 주소>를 실행해 나가는 인터페이스가 Tailscale이 아니라 이더넷·Wi-Fi로 나오면 경로가 지워진 것입니다. Tailscale 로그에 경로를 다시 거는 기록이 초당 몇 건씩 이어지기도 합니다(VPN과 경로를 두고 다투는 상태). - 해결: 사내 VPN을 끄고
tailscale down→tailscale up으로 Tailscale을 다시 올리세요. 경로가 돌아오면 바로 연결됩니다. 사내 VPN과 동시에 쓰는 방법은 VPN 정책에 달려 있어 오크텀에서 해결할 수 없습니다. - Windows 방화벽 규칙을 따로 만들 필요는 없습니다. 오크텀은 Tailscale 주소에만 포트를 열고, 막히는 원인은 방화벽이 아니라 경로입니다.
위험과 한계
chat(메시지·파일)으로 좁게 두고, 위의 허용·속도 제한·잠금 화면·감사 기록으로 피해를 줄입니다.- Tailscale 계정에 2단계 인증을 켜고, Tailnet Lock·ACL로 범위를 좁히세요. 등록 기기를 잃어버렸다면 받는 PC에서 바로 삭제하세요.
- 「터미널 허용」은 그 PC 사용자 권한의 셸 전체와 프로젝트 파일 보기·고치기를 함께 허용합니다. 믿는 기기에만 켜세요. 켜면 그 기기 연결 중 화면 잠금이 꺼지고, 언제든 받는 PC에서 끌 수 있습니다(끄면 열린 원격 채널이 즉시 닫힙니다).
- 민감한 자료가 있는 PC는 이 기능을 켜지 않는 쪽이 가장 안전합니다. 받기는 기본 꺼짐입니다.
- 회사 PC에 켜기 전에 회사 정책을 확인하세요. 사내 PC에 외부 PC의 접속을 받는 것을 보안 정책이 금지하거나 사전 승인을 요구할 수 있습니다. 허락 없이 쓰다 문제가 되는 책임은 사용자에게 있습니다.
- 상대 PC와 오크텀 버전(원격 프로토콜)이 다르면 연결이 거절되고 「상대 PC 업데이트 필요」가 나옵니다.