여분의 Mac을 Claude Code 전용 제어 환경으로 만드는 단계별 가이드
요약
본 가이드는 개인 데이터와 Apple ID가 없는 여분의 Mac을 Claude Code 전용 독립 실행 환경으로 구축하는 방법을 단계별로 안내합니다. 이를 통해 주 Mac과 분리된 안전한 공간에서 에이전트 기반의 연구 및 개발 작업을 수행할 수 있습니다.
핵심 포인트
- 여분 Mac을 사용해 주 Mac으로부터 민감 정보를 격리하고 보안성을 높일 수 있습니다.
- 새 로컬 관리자 계정을 만들고 Apple ID 로그인을 건너뛰는 것이 핵심입니다.
- SSH, Claude 앱, LaunchAgent를 활용하여 원격 및 GUI 기반의 제어 환경을 구축합니다.
- 개인 데이터가 없는
여분의 Mac에 Claude Code를 설치해, 주 Mac의 SSH와 휴대폰 Claude 앱에서 항상 접근 가능한 독립 실행 환경으로 구성함 - 컨테이너보다 장비 격리 수준이 높고 Unity와 Mac 전용 GUI 앱도 사용할 수 있어,
--dangerously-skip-permissions
의 위험을 주 Mac과 분리할 수 있음
- 새 로컬 관리자 계정, 암호 없는
sudo
·SSH, 절전 방지, 클립보드 동기화와 Claude Code 설치를 거쳐 원격 작업 기반을 구축함
- GUI 제어는 LaunchAgent가 GUI 세션 안에서 유지하는
tmux 서버로 구현하며, 화면 기록·손쉬운 사용·전체 디스크 접근 권한은 사람이 직접 허용해야 함 - Remote Control, Claude in Chrome, Screen Sharing, Tailscale을 더하면 휴대폰 제어부터 브라우저 자동화와 외부 접속까지 가능하지만,
별도 인증과 macOS 권한 설정이 필요함
구성 목적과 기본 원칙
- Claude Code가 독립적으로 제어할 환경을 만들어 연구·개발 작업을 주 Mac 밖에 위임함
--dangerously-skip-permissions
를 사용하는 에이전트는 광범위한 권한을 가지므로, 개인 데이터와 Apple ID가 없는 별도 장비에서 실행해 접근 가능한 민감 정보를 줄임
- 휴대폰 Claude 앱이나 주 Mac의 SSH를 통해 언제든 Claude Code에 접근할 수 있음
- 기본 구성에는 같은 Wi-Fi에 연결된 여분의
대상 Mac과 일상적으로 사용하는 소스 Mac이 필요함
컨테이너나 OpenClaw 대신 여분의 Mac을 쓰는 이유
- 컨테이너는 여전히 주 Mac에서 실행되며 네트워크 요청도 주 Mac을 통과하므로 완전한 장비 분리가 아님
- Unity나 Mac 전용 앱을 실행하기 어렵고, 컴퓨터 사용 기능으로 클릭·드래그해야 하는 GUI 작업에도 제약이 있음
- 여분의 Mac 구성은 최신 Claude Code 기능과 Claude 앱 제어, 보유 중인 Claude 구독 사용량을 그대로 활용함
- 다음 원칙에 따라 환경을 분리함
- 주 Mac이 아닌
오래된 여분의 Mac을 사용함 - 개인 데이터와 Apple ID가 없는 새 로컬 계정을 만듦
- 로컬 네트워크에서는 SSH, 휴대폰에서는 Claude 앱으로 제어함
1. 대상 Mac 초기화와 계정 격리
- 기존 개인 데이터가 있다면 에이전트가 모두 접근할 수 있으므로 먼저 장비를 지움
- 지원되는 Mac: System Settings → General → Transfer or Reset →
Erase All Content and Settings - 구형 Intel Mac: 부팅 시
Cmd-R
로 Recovery에 들어가 Disk Utility로 내부 드라이브를 지운 뒤 macOS를 재설치함
- 필요하면 System Settings → General → Software Update에서 최신 macOS로 업데이트함
- 새
로컬 사용자 계정을 만들고 Apple ID 로그인은 건너뜀
sudo
를 사용할 수 있도록 계정에 관리자 권한을 부여함
- System Settings → Users & Groups에서
Allow this user to administer this computer
를 활성화함
- 다른 관리자 계정에서 복구할 때는
sudo dseditgroup -o edit -a <user> -t user admin
을 사용할 수 있음
2. SSH 원격 로그인 활성화
- 대상 Mac에서 다음 명령으로
Remote Login을 활성화함
sudo systemsetup -setremotelogin on
Turning Remote Login on or off requires Full Disk Access privileges
오류가 발생하면 Terminal에 Full Disk Access를 부여함
- System Settings → Privacy & Security → Full Disk Access에서 Applications → Utilities → Terminal을 추가함
- Terminal을 종료했다가 다시 열고 명령을 재실행함
3. 암호 없는 sudo 설정
- 에이전트와 SSH 명령이 매번 암호를 요구하지 않도록
/etc/sudoers.d/
에 계정별 규칙을 만듦
echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd
- 첫 명령은 규칙을 기록하고, 두 번째 명령은
sudo
가 요구하는 읽기 전용 권한을 설정함
- 마지막 검증에서는 반드시
parsed OK
가 출력돼야 하며, 잘못된 sudoers 문법은 sudo
접근을 막을 수 있음
sudo -n true
가 출력 없이 성공하면 암호 없는 sudo가 동작함
4. 대상 Mac 주소 확인
- IP는 재부팅하거나 시간이 지나면 바뀔 수 있으므로 고정된
호스트 이름 사용을 권장함
scutil --get LocalHostName
- 출력된 이름에
.local
을 붙여 <target-host>.local
로 사용함
- 같은 네트워크에서 두 Mac의
.local
이름이 겹치면 잘못된 장비에 연결될 수 있으므로 고유한 이름을 지정함
sudo scutil --set LocalHostName newmacbook
- IP가 필요하면
ipconfig getifaddr en0
으로 확인할 수 있지만 변경될 수 있음
- 이후 주소는
<user>@<target-host>.local
형식으로 사용함
5. 소스 Mac에서 암호 없는 SSH 구성
- 기존 SSH 키가 없다면 소스 Mac에서 Ed25519 키를 생성함
ssh-keygen -t ed25519
ssh-copy-id <user>@<target-host>.local
- 공개 키를 설치할 때 대상 계정 암호를 한 번 입력함
- 다음 명령이 암호 입력 없이 대상 사용자 이름을 출력하면 설정이 완료됨
ssh <user>@<target-host>.local whoami
6. 절전과 자동 잠금 방지
- macOS는 전원 연결 상태에서도 약 10분간 유휴 상태면 잠들어 네트워크에서 사라질 수 있으므로 절전을 비활성화함
sudo pmset -c sleep 0
sudo pmset -c disablesleep 1
sudo pmset -c displaysleep 0
- 각 명령은 충전 중 시스템 절전 방지, 덮개를 닫은 상태의 절전 방지, 디스플레이 절전 방지를 적용함
pmset -g | grep -iE 'sleep'
출력에서 sleep 0
, SleepDisabled 1
, displaysleep 0
을 확인함
- 배터리에서도 적용하려면
-c
대신 -a
를 쓰지만 배터리 소모가 늘어남
- 화면 보호기로 인한 자동 잠금도 막음
defaults -currentHost write com.apple.screensaver idleTime 0
7. SSH 클립보드 동기화
- macOS의
pbcopy
와 pbpaste
를 SSH로 연결하면 Apple ID나 외부 서비스 없이 암호화된 P2P 방식으로 텍스트를 전송할 수 있음
clip.sh
는 이미지 전송까지 지원함
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/clip
chmod +x ~/.local/bin/clip
export IC_BOX="<user>@<target-host>.local"
IC_BOX
설정은 ~/.zshrc
에 추가함
clip send
는 소스 Mac의 텍스트나 이미지를 대상으로 보내며, 이미지는 대상의 Claude Code 세션에 Ctrl-V
로 붙여넣을 수 있음
clip get
은 대상 Mac의 클립보드를 소스 Mac으로 가져옴
8. Claude Code 설치
- 소스 Mac에서 SSH를 통해 대상 Mac에 특정 Claude Code 버전을 설치함
ssh <user>@<target-host>.local 'curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.201'
- 버전
2.1.201
대신 latest
나 stable
도 지정할 수 있음
~/.local/bin
PATH 경고가 나오면 모든 zsh에서 읽는 ~/.zshenv
에 경로를 추가함
ssh <user>@<target-host>.local 'echo '\''export PATH="$HOME/.local/bin:$PATH"'\'' >> ~/.zshenv'
9. Claude Code 친화적 환경 선택 설치
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-claude-env.sh && bash setup-claude-env.sh'
- 비대화형 실행은 기본적으로 핵심 항목만 설치하며
--yt-dlp
, --playwright
, --all
, --core
플래그를 지원함
- 스크립트는
멱등성이 있어 다시 실행해도 됨
10. Claude와 GitHub 로그인
- SSH로 대상 Mac에 접속해
claude
를 실행하고, 주 Mac의 브라우저에서 완료할 수 있는 브라우저·장치 코드 흐름으로 Anthropic 계정에 로그인함
- 저장소 작업을 위해
gh auth login
으로 GitHub 로그인을 추가하는 방식을 권장함
- 에이전트가 주 계정에 영향을 주지 않도록
별도 GitHub 계정을 사용하는 편이 안전함
11. SSH를 통한 컴퓨터 사용 기능
GUI 세션에 연결하는 방식
- SSH 프로세스는 GUI 로그인 세션에 연결된 화면 기록과 손쉬운 사용 권한을 직접 사용할 수 없음
- LaunchAgent가 GUI 세션 안의 고정 소켓에서
tmux 서버와 앵커 세션cc
를 유지함
-
해당 서버 안에서 시작된 Claude Code는 GUI 세션을 상속해 스크린샷, 마우스와 키보드 제어에 접근함
설치
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o setup-computer-use.sh && bash setup-computer-use.sh'
- LaunchAgent와 tmux 앵커를 설치하고
~/.claude.json
에서 내장 computer-use
도구를 활성화함
- tmux와 Claude Pro 또는 Max 플랜이 필요하며, 스크립트는 재실행할 수 있고
--uninstall
로 제거 가능함
ic
명령으로 세션 관리
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/… -o ~/.local/bin/ic
chmod +x ~/.local/bin/ic
echo 'export IC_BOX="<user>@<target-host>.local"' >> ~/.zshrc
- 주요 명령은 다음과 같음
ic
: 새 Claude 세션
ic -c
, ic -r
: 최근 대화 계속하기 또는 재개 선택기
ic --chrome
: Claude in Chrome과 함께 실행
ic sh
: 대상의 일반 셸
ic vnc
: Screen Sharing 실행
ic rc
: 휴대폰 Remote Control 서버
ic history
, ic ls
: 저장 대화와 실행 세션 확인
ic attach <id>
, ic kill <id>
, ic kill-all
, ic kill-except
: 세션 연결·종료 관리
- 모든
ic
세션은 --dangerously-skip-permissions
로 실행되며, ic rc
는 --permission-mode bypassPermissions
를 사용함
- tmux 안에서는 Claude가 내보내는 OSC52 클립보드 시퀀스를 Terminal.app이 받지 못하므로, 화면 전체를 복사하려면
Cmd-A
후 Cmd-C
를 사용함
에이전트 간 위임
- 소스 Mac의 Claude Code는 SSH와
tmux send-keys
를 사용해 대상에서 실행 중인 Claude 세션에 프롬프트를 보낼 수 있음
- 긴 프롬프트는 텍스트와 같은 전송 묶음에 포함된 Enter가 제출로 처리되지 않을 수 있어, 잠시 기다린 뒤 Enter를 한 번 더 보내야 함
tmux capture-pane
과 tail
로 응답을 읽고 작업이 끝날 때까지 반복 확인할 수 있음
사람이 직접 부여해야 하는 권한
- 화면 기록과 손쉬운 사용 권한은 macOS GUI에서 사람이 직접 승인해야 하며 합성 클릭으로 처리할 수 없음
- 최초 캡처 때 나타나는
bypass the window picker
허용 요청도 승인해야 하며, 약 한 달마다 다시 나타날 수 있음
- 권한 대상은
claude
가 아니라 책임 프로세스인 tmux 바이너리임
-
Intel 경로:
/usr/local/bin/tmux -
Apple Silicon 경로:
/opt/homebrew/bin/tmux -
화면 기록은 스크린샷, 손쉬운 사용은 마우스·키보드 제어를 허용함
-
권한 상태가 프로세스 시작 시 캐시되므로 부여 후
tmux -S /tmp/cc-tmux.sock kill-server
로 서버를 재시작해야 함
- 설정 목록에 tmux가 나타나지 않으면
ic
에서 Claude에게 스크린샷을 요청해 권한 요청을 먼저 발생시킴
- 최신 macOS에서 앱별 데이터 접근 요청을 반복하지 않으려면 tmux에
Full Disk Access를 부여하고 서버를 다시 시작함
12. VPN과 기타 GUI 앱 설치
- 대상 Mac의 트래픽을 로컬 IP와 분리하기 위해 Proton VPN 같은 VPN을 설치할 수 있음
- 컴퓨터 사용 기능을 설정했다면
ic
에서 Claude에게 앱 설치를 요청할 수 있지만 다음 작업은 사람이 처리해야 함
- 무료 요금제라도 로그인 자격 증명이 필요하며 암호는
clip send
로 전달할 수 있음
-
첫 연결의 VPN·네트워크 구성 권한과 Mac 암호 요청을 승인해야 함
-
GUI 전용 앱 제어에는 컴퓨터 사용 기능이 필요함
-
로그인 이후에는 에이전트가 연결과 서버 전환을 수행할 수 있으며, 같은 흐름을 다른 애플리케이션에도 적용할 수 있음
13. 휴대폰에서 제어
- 기존 세션에서
/remote-control
또는 /rc
를 실행하면 Claude 앱으로 같은 세션을 이어서 제어할 수 있음
claude remote-control
은 휴대폰에서 기존 세션 연결뿐 아니라 새 세션 생성도 지원함
ic rc
로 시작하면 휴대폰에서 만든 세션도 대상 Mac의 컴퓨터 사용 기능에 접근할 수 있음
14. Claude in Chrome 설정
- 일반 컴퓨터 사용 기능은 브라우저 화면을 볼 수 있지만 클릭이나 입력에는 제약이 있음
- Claude in Chrome 확장은 탐색, 클릭, 폼 입력, 콘솔 로그와 네트워크 요청 읽기를 지원함
- Playwright MCP와 달리 대상 Mac의 일반 Chrome 프로필을 사용하므로 이미 로그인한 상태를 활용할 수 있음
- 대상 Mac에 Chrome과 Anthropic Pro, Max, Team 또는 Enterprise 직접 구독이 필요함
- 다음 작업은 사람이 직접 처리해야 함
- Chrome Web Store에서
Add to Chrome
을 클릭함
- 확장 프로그램에서 Claude 계정에 로그인하며, 자격 증명은
clip send
로 전달할 수 있음
- Claude Code에서
/chrome
을 실행해 기본 활성화하거나, 세션별로 claude --chrome
또는 ic --chrome
을 사용함
- 연결되지 않으면 Chrome을 한 번 재시작함
- 9단계 환경 스크립트는 좌표 대신 접근성 트리의 요소 참조를 사용하고, 요청하지 않은 스크린샷을 피하도록
~/.claude/CLAUDE.md
에 지침을 추가함
-
소스와 대상 Chrome이 같은 계정의 확장을 동시에 실행하면 선택 요청이 나타나며, 로컬 장비 판별이 잘못될 수 있는 이슈 #74667이 있음
-
소스 Mac의 확장을 일시 삭제하거나 소스의 Chrome을 종료해 회피할 수 있음
-
휴대폰에서 생성한 세션에는 현재 브라우저 도구가 제공되지 않는 이슈 #74671이 있음
-
터미널에서 세션을 시작한 뒤
/rc
로 휴대폰을 연결함
15. macOS Screen Sharing
-
내장 Screen Sharing으로 소스 Mac에서 대상 화면을 실시간 확인하고 마우스·키보드를 직접 제어할 수 있음
-
macOS 12.1부터는 명령줄로 활성화할 수 없으므로 대상 GUI에서 설정해야 함
-
System Settings → General → Sharing에서 Screen Sharing을 켬
-
Remote Management가 켜져 있어 토글이 보이지 않으면 먼저 끔
-
소스 Mac에서 다음 명령으로 연결함
open vnc://<user>@<target-host>.local
- 대상 계정 암호로 로그인하고 Keychain 암호 저장을 선택할 수 있음
16. Tailscale을 통한 외부 네트워크 접속
.local
주소는 LAN에서만 동작하지만 Tailscale은 P2P 종단 간 암호화 WireGuard 터널을 통해 SSH, ic
, clip
, Screen Sharing을 외부 네트워크에서도 사용할 수 있게 함
- 공개 인터넷에 서비스를 노출하지 않으며, 홈 네트워크에서는 직접 LAN 경로를 사용함
- Tailscale 네트워크 가입은 장비 간 도달 가능성만 제공하므로 SSH 키나 Screen Sharing 암호는 계속 필요함
- 대상 Mac에 헤드리스 방식으로 설치하고 출력되는 URL에서 로그인함
ssh <user>@<target-host>.local 'brew install tailscale'
ssh <user>@<target-host>.local 'sudo brew services start tailscale'
ssh <user>@<target-host>.local 'sudo tailscale up --operator=<user>'
- 소스 Mac에도 설치하고 대상과
같은 Tailscale 계정으로 로그인함
brew install --cask tailscale-app
- 기본 활성화된 MagicDNS를 사용하면
.local
을 뺀 호스트 이름으로 어디서나 접근할 수 있음
export IC_BOX="<user>@<target-host>"
# export IC_BOX="<user>@<target-host>.local"
- Screen Sharing 주소도
open vnc://<user>@<target-host>
로 변경함
-
관리자 콘솔에서 다음 보안·가용성 설정을 권장함
-
탈취된 로그인만으로 새 장비가 가입하지 못하도록
device approval을 활성화함 -
대상 장비가 약 180일 뒤 키 만료로 연결 해제되지 않도록 key expiry를 비활성화함
-
실제 원격 접속은 소스 Mac을 휴대폰 핫스폿 같은 다른 네트워크에 연결한 뒤
ic ls
로 확인함
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기