๋“€์–ผ ๋จธ์‹ (์˜ˆ: 37/39)์„ ๋ฒˆ๊ฐˆ์•„ ์“ฐ๋Š” ํ™˜๊ฒฝ์—์„œ๋Š”, ๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด๊ฐ€ ์•ˆ ๋ถ™๋Š” ์›์ธ์˜ ๋Œ€๋ถ€๋ถ„์ด โ€œํฌํŠธ ์ถฉ๋Œโ€์ด๋‚˜ โ€œ๊ณ„์ • ํ˜ผ์„ โ€์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ •๋ฆฌํ•ด๋‘๋ฉด ์ดํ›„์—๋Š” rel37, rel39๋งŒ ํ˜ธ์ถœํ•ด์„œ ๋ฐ”๋กœ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ์‹ค์ œ ์šด์˜ ์ค‘ ์ž์ฃผ ํ„ฐ์ง€๋Š” ์‹คํŒจ ํŒจํ„ด์„ ๊ธฐ์ค€์œผ๋กœ, ๊ฒฝ๋กœยทํ˜ธ์ŠคํŠธยท๊ณ„์ •์„ ์ต๋ช…ํ™”ํ•œ ์ƒํƒœ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ํ‹€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋‚ด: ๋ณธ๋ฌธ์€ ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ๋งŒ๋“  ๋’ค, ์‹ค์ œ ์šด์˜ ํ๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ํŽธ์ง‘ยท๊ฒ€์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

flowchart LR
A[์š”์ฒญ: rel37/rel39 ์‹คํ–‰] --> B[SSH Config Host ๋งคํ•‘]
B --> C[๋กœ์ปฌ ํฌํŠธ ๋ถ„๋ฆฌ ํฌ์›Œ๋”ฉ]
C --> D{ํ”„๋กœํ•„ ์„ ํƒ}
D --> E[๊ธฐ๋ณธ: profile=openclaw]
D --> F[์˜ˆ์™ธ: profile=chrome + ํƒญ Relay ON]
E --> G[์ž‘์—…/๊ฒ€์ฆ]
F --> G

ํ•œ ์ค„ ๊ฒฐ๋ก 

๋“€์–ผ ๋ฆด๋ ˆ์ด ์šด์˜์˜ ๊ธฐ์ค€์„ ์€ **๊ธฐ๋ณธ profile=openclaw + ์˜ˆ์™ธ profile=chrome(ํƒญ attach ํ•„์ˆ˜)**๋กœ ๊ณ ์ •ํ•˜๊ณ , ํฌํŠธ/๊ณ„์ •/Host ๋ณ„์นญ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งฅ๋ฝ ๋ณด์™„

๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๋•Œ ๋Œ€๋ถ€๋ถ„์€ OpenClaw ์ž์ฒด ์ด์Šˆ๊ฐ€ ์•„๋‹ˆ๋ผ ํ™˜๊ฒฝ ๋ถˆ์ผ์น˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 39๋Š” ๋ฌด๋น„๋ฒˆ์ธ๋ฐ 37์€ ๋น„๋ฒˆ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋œจ๊ฑฐ๋‚˜, ๋กœ์ปฌ 18789/18792๊ฐ€ ์ด๋ฏธ ์ ์œ ๋˜์–ด ํฌ์›Œ๋”ฉ์ด ์‹คํŒจํ•œ๋‹ค. ๊ทธ๋ž˜์„œ โ€œ๋จธ์‹ ๋ณ„ ๋ถ„๋ฆฌ ํฌํŠธ + Host ๋ณ„์นญ + ์Šคํฌ๋ฆฝํŠธ ๋ถ„๋ฆฌโ€๊ฐ€ ์‹ค๋ฌด์—์„œ๋Š” ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋‹ค.

ํ•ต์‹ฌ ์š”์•ฝ

  • ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™” ๊ธฐ๋ณธ๊ฐ’์€ profile=openclaw๋กœ ๊ณ ์ •ํ•˜๊ณ , ๊ธฐ์กด ๋กœ๊ทธ์ธ ์„ธ์…˜์ด ๊ผญ ํ•„์š”ํ•  ๋•Œ๋งŒ profile=chrome์œผ๋กœ ์“ด๋‹ค(ํƒญ attach ํ•„์ˆ˜).
  • ๋กœ์ปฌ ๊ธฐ๋ณธ ํฌํŠธ(18789/18792) ์ง์ ‘ ์žฌ์‚ฌ์šฉ๋ณด๋‹ค, ๋จธ์‹ ๋ณ„ ๋ถ„๋ฆฌ ํฌํŠธ(์˜ˆ: 28789/28792, 38789/38792)๊ฐ€ ์•ˆ์ •์ ์ด๋‹ค.
  • ~/.openclaw-relay/*.sh๋กœ ์‹คํ–‰ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋ฉด alias/function ์ถฉ๋Œ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ~/.ssh/config์—์„œ Host ๋ณ„์นญ(relay37, relay39)์„ ์“ฐ๋ฉด ์‚ฌ์šฉ์ž๋ช… ํ˜ผ์„ ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ข…๋ฃŒ ๋ช…๋ น(rel37_off, rel39_off)์„ ํ•จ๊ป˜ ๋‘๋ฉด stale socket ์ •๋ฆฌ๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

์šฉ์–ด๋ฅผ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ

๋ฆด๋ ˆ์ด๋Š” โ€œ์›๊ฒฉ ์žฅ๋น„์˜ ๋ฌธ์„ ๋‚ด ์ปดํ“จํ„ฐ์˜ ๋‹ค๋ฅธ ๋ฌธ์œผ๋กœ ๋ณต์‚ฌํ•ด ๋ถ™์ด๋Š” ์ž‘์—…โ€์— ๊ฐ€๊น๋‹ค. ๋ฌธ์ œ๋Š” ์ด๋ฏธ ๋ฌธ์„ ๋ˆ„๊ฐ€ ์“ฐ๊ณ  ์žˆ์œผ๋ฉด(ํฌํŠธ ์ ์œ ) ๊ฐ™์€ ๋ฒˆํ˜ธ๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์žฅ๋น„๋ณ„๋กœ ๋ฌธ ๋ฒˆํ˜ธ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋‘๋Š” ๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค.

์น ํŒ ํŒ์„œํ˜• ์น˜ํŠธ์‹œํŠธ

  1. ๊ธฐ๋ณธ ์ž๋™ํ™”๋Š” profile=openclaw๋กœ ๊ณ ์ •ํ•œ๋‹ค.
  2. ์‹ค์ œ Chrome ํƒญ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ profile=chrome + Relay ON์„ ์“ด๋‹ค.
  3. ํฌํŠธ๋Š” ์žฅ๋น„๋ณ„๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค(37โ†’2878x, 39โ†’3878x).
  4. ์—ฐ๊ฒฐ ํ™•์ธ์€ rel_ls + ssh -o BatchMode=yes <host> 'echo ok'๋กœ ๋๋‚ธ๋‹ค.

๊ฐœ๋… ๋ถ„๋ฆฌ: ๋ฌด์—‡์„ ํ‘œ์ค€ํ™”ํ• ๊นŒ

  • ํ”„๋กœํ•„ ๊ณ„์ธต: ๊ธฐ๋ณธ openclaw, ์˜ˆ์™ธ chrome(+ํƒญ attach)
  • ์ ‘์† ๊ณ„์ธต: HostName/User/IdentityFile
  • ํฌํŠธ ๊ณ„์ธต: ๋จธ์‹ ๋ณ„ ๋กœ์ปฌ ํฌ์›Œ๋”ฉ ํฌํŠธ
  • ์‹คํ–‰ ๊ณ„์ธต: rel37, rel39, rel_ls, rel37_off, rel39_off
  • ๊ฒ€์ฆ ๊ณ„์ธต: LISTEN ํ™•์ธ + ๋ฌด๋น„๋ฒˆ ๋กœ๊ทธ์ธ ํ™•์ธ + profile๋ณ„ tabs ์ƒํƒœ ํ™•์ธ

์›์ธ ๋ถ„ํ•ด: ์™œ ์ž์ฃผ ์‹คํŒจํ• ๊นŒ

  1. ๋กœ์ปฌ 18789/18792๊ฐ€ ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ๋ฐ ๊ฐ™์€ ํฌํŠธ๋กœ ๋‹ค์‹œ ํฌ์›Œ๋”ฉํ•จ.
  2. 37/39 ์‚ฌ์šฉ์ž๋ช…์ด ๋‹ค๋ฅด์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ๋Š” ํ•œ ์‚ฌ์šฉ์ž๋ช…์œผ๋กœ ๊ณ ์ •๋จ.
  3. .zshrc์—์„œ alias์™€ ํ•จ์ˆ˜๋ฅผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋™์‹œ์— ์ •์˜ํ•จ.
  4. SSH control socket์ด ๋‚จ์•„์„œ ์„ค์ • ๋ณ€๊ฒฝ์ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ.

๋Œ€์‘ ์„ค๊ณ„: ์ต๋ช…ํ™”๋œ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ

์•„๋ž˜ ํ…œํ”Œ๋ฆฟ์€ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด ์—†์ด ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1) ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ

mkdir -p ~/.openclaw-relay

2) ~/.openclaw-relay/rel37.sh

#!/usr/bin/env bash
ssh -fN -M -S "$HOME/.ssh/rel37.sock" \
  -o ExitOnForwardFailure=yes \
  -o ServerAliveInterval=30 \
  -o ServerAliveCountMax=3 \
  -L 28789:127.0.0.1:18789 \
  -L 28792:127.0.0.1:18792 \
  relay37

3) ~/.openclaw-relay/rel39.sh

#!/usr/bin/env bash
ssh -fN -M -S "$HOME/.ssh/rel39.sock" \
  -o ExitOnForwardFailure=yes \
  -o ServerAliveInterval=30 \
  -o ServerAliveCountMax=3 \
  -L 38789:127.0.0.1:18789 \
  -L 38792:127.0.0.1:18792 \
  relay39

4) ~/.ssh/config (์ต๋ช…ํ™” ํ…œํ”Œ๋ฆฟ)

Host relay37
  HostName <HOST_37_IP_OR_DNS>
  User <HOST_37_USER>
  IdentityFile ~/.ssh/<HOST_37_KEY>
  IdentitiesOnly yes
 
Host relay39
  HostName <HOST_39_IP_OR_DNS>
  User <HOST_39_USER>
  IdentityFile ~/.ssh/<HOST_39_KEY>
  IdentitiesOnly yes

5) ~/.zshrc alias

unalias rel37 rel39 rel_ls rel37_off rel39_off 2>/dev/null
 
alias rel37="$HOME/.openclaw-relay/rel37.sh"
alias rel39="$HOME/.openclaw-relay/rel39.sh"
alias rel_ls='lsof -nP -iTCP:28789 -iTCP:28792 -iTCP:38789 -iTCP:38792 -sTCP:LISTEN'
alias rel37_off='ssh -S $HOME/.ssh/rel37.sock -O exit relay37 2>/dev/null || true'
alias rel39_off='ssh -S $HOME/.ssh/rel39.sock -O exit relay39 2>/dev/null || true'

6) ์ ์šฉ ๋ฐ ๊ฒ€์ฆ

chmod +x ~/.openclaw-relay/rel37.sh ~/.openclaw-relay/rel39.sh
exec zsh
 
rel37_off; rel39_off
rm -f ~/.ssh/rel37.sock ~/.ssh/rel39.sock
 
rel37
rel39
rel_ls
 
ssh -o BatchMode=yes relay37 'echo relay37-ok'
ssh -o BatchMode=yes relay39 'echo relay39-ok'
 
# ํ”„๋กœํ•„๋ณ„ ์ ๊ฒ€
openclaw browser --browser-profile openclaw status
openclaw browser --browser-profile openclaw tabs
openclaw browser --browser-profile chrome status
openclaw browser --browser-profile chrome tabs

20๋ถ„ ๋„์ž… ๋ฃจํ‹ด

  • 5๋ถ„: ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ํ”„๋กœํ•„์„ openclaw๋กœ ๊ณ ์ •(ํŒ€ ๊ณตํ†ต ๊ทœ์น™)
  • 5๋ถ„: SSH Host ๋ณ„์นญ 2๊ฐœ(relay37, relay39) ์ž‘์„ฑ
  • 5๋ถ„: rel37.sh / rel39.sh ์ƒ์„ฑ + ์‹คํ–‰๊ถŒํ•œ ๋ถ€์—ฌ
  • 5๋ถ„: rel_ls, BatchMode, browser tabs ๊ฒ€์ฆ์œผ๋กœ ๋ฌด๋น„๋ฒˆ/ํฌํŠธ/ํ”„๋กœํ•„ ์ƒํƒœ ํ™•์ธ

ํ˜„์žฅํ˜• ๋ฏธ๋‹ˆ ์‚ฌ๋ก€

์‚ฌ๋ก€ A (์„ฑ๊ณต)

ํ•œ ํŒ€์€ 37/39๋ฅผ ๋ชจ๋‘ 18789/18792๋กœ ํฌ์›Œ๋”ฉํ•˜๋˜ ์ƒํƒœ์—์„œ, ๋จธ์‹ ๋ณ„ ๋ถ„๋ฆฌ ํฌํŠธ(2878x/3878x)๋กœ ๋ฐ”๊พผ ๋’ค ํฌํŠธ ์ถฉ๋Œ ์ด์Šˆ๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค. ์šด์˜์ž๊ฐ€ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ฌป๋Š” ์‹œ๊ฐ„ ์ž์ฒด๊ฐ€ ์ค„์—ˆ๋‹ค.

์‚ฌ๋ก€ B (์‹คํŒจ)

๋‹ค๋ฅธ ํŒ€์€ .zshrc์— rel37() ํ•จ์ˆ˜์™€ alias rel37=...๋ฅผ ํ•จ๊ป˜ ์œ ์ง€ํ•ด parse error near '()'๊ฐ€ ๋ฐ˜๋ณต๋๋‹ค. ํ•จ์ˆ˜ ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜๊ณ  alias ๋ฐฉ์‹์œผ๋กœ ํ†ต์ผํ•˜์ž ์ฆ‰์‹œ ๋ณต๊ตฌ๋๋‹ค.

์ ์šฉ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™” ํ”„๋กœํ•„์ด openclaw๋กœ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค.
  • chrome ํ”„๋กœํ•„์€ ์˜ˆ์™ธ ์ž‘์—…์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ํƒญ attach ํ•„์š”์„ฑ์„ ํŒ€์ด ์ธ์ง€ํ•œ๋‹ค.
  • rel37/rel39 ํฌํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.
  • 37/39 ์‚ฌ์šฉ์ž ๊ณ„์ •์ด SSH config์— ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค.
  • alias์™€ ํ•จ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค.
  • rel37_off, rel39_off ์ •๋ฆฌ ๋ช…๋ น์ด ๋™์ž‘ํ•œ๋‹ค.
  • ๋ฌด๋น„๋ฒˆ ๊ฒ€์ฆ(BatchMode=yes)์ด ํ†ต๊ณผํ•œ๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

โ€ป AI ์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฌผ์„ ํฌํ•จํ•œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์ตœ์ข… ๋ฐฐํฌ ์ „ ์‹ค์ œ ๋„คํŠธ์›Œํฌ/๊ถŒํ•œ ์ •์ฑ…์— ๋งž์ถฐ HostName, User, Key ๊ฒฝ๋กœ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.