๋์ผ ๋จธ์ (์: 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 ์ ๋ฆฌ๊ฐ ์ฌ์์ง๋ค.
์ฉ์ด๋ฅผ ํ ๋ฒ์ ์ดํดํ๊ธฐ
๋ฆด๋ ์ด๋ โ์๊ฒฉ ์ฅ๋น์ ๋ฌธ์ ๋ด ์ปดํจํฐ์ ๋ค๋ฅธ ๋ฌธ์ผ๋ก ๋ณต์ฌํด ๋ถ์ด๋ ์์ โ์ ๊ฐ๊น๋ค. ๋ฌธ์ ๋ ์ด๋ฏธ ๋ฌธ์ ๋๊ฐ ์ฐ๊ณ ์์ผ๋ฉด(ํฌํธ ์ ์ ) ๊ฐ์ ๋ฒํธ๋ก ๋ณต์ฌํ ์ ์๋ค๋ ์ ์ด๋ค. ๊ทธ๋์ ์ฅ๋น๋ณ๋ก ๋ฌธ ๋ฒํธ๋ฅผ ๋ถ๋ฆฌํด ๋๋ ๊ฒ ํต์ฌ์ด๋ค.
์น ํ ํ์ํ ์นํธ์ํธ
- ๊ธฐ๋ณธ ์๋ํ๋
profile=openclaw๋ก ๊ณ ์ ํ๋ค.- ์ค์ Chrome ํญ์ด ํ์ํ ๋๋ง
profile=chrome+ Relay ON์ ์ด๋ค.- ํฌํธ๋ ์ฅ๋น๋ณ๋ก ๋ถ๋ฆฌํ๋ค(37โ2878x, 39โ3878x).
- ์ฐ๊ฒฐ ํ์ธ์
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 ์ํ ํ์ธ
์์ธ ๋ถํด: ์ ์์ฃผ ์คํจํ ๊น
- ๋ก์ปฌ 18789/18792๊ฐ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ๋ฐ ๊ฐ์ ํฌํธ๋ก ๋ค์ ํฌ์๋ฉํจ.
- 37/39 ์ฌ์ฉ์๋ช ์ด ๋ค๋ฅด์ง๋ง ์คํฌ๋ฆฝํธ๋ ํ ์ฌ์ฉ์๋ช ์ผ๋ก ๊ณ ์ ๋จ.
.zshrc์์ alias์ ํจ์๋ฅผ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋์์ ์ ์ํจ.- SSH control socket์ด ๋จ์์ ์ค์ ๋ณ๊ฒฝ์ด ์ฆ์ ๋ฐ์๋์ง ์์.
๋์ ์ค๊ณ: ์ต๋ช ํ๋ ํ์ค ํ ํ๋ฆฟ
์๋ ํ ํ๋ฆฟ์ ๊ฐ์ธ ์๋ณ ์ ๋ณด ์์ด ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ ์ ์๋ค.
1) ์คํ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก
mkdir -p ~/.openclaw-relay2) ~/.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 \
relay373) ~/.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 \
relay394) ~/.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 yes5) ~/.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 tabs20๋ถ ๋์ ๋ฃจํด
- 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)์ด ํต๊ณผํ๋ค.
๋ค์ ์ฝ๊ธฐ
- 12. ๋ธ๋ผ์ฐ์ ๋ฆด๋ ์ด ์ฐ๋ ๊ตฌ์กฐ
- 18. ํ ๋ ๊ทธ๋จ 5๋ถ ๋ณต๊ตฌ
- 22. ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน ํ์ ์ธํ + ๋ณด์
- 23. node run plaintext ws ๋ณด์ ์๋ฌ ํด๊ฒฐ
โป AI ์์ฑ ๊ฒฐ๊ณผ๋ฌผ์ ํฌํจํ ๋ฌธ์์ ๋๋ค. ์ต์ข ๋ฐฐํฌ ์ ์ค์ ๋คํธ์ํฌ/๊ถํ ์ ์ฑ ์ ๋ง์ถฐ HostName, User, Key ๊ฒฝ๋ก๋ฅผ ๋ค์ ํ์ธํ์ธ์.