---
read_when:
    - การตั้งค่าหรือแก้ไขข้อบกพร่องของการควบคุม Mac ระยะไกล
summary: ขั้นตอนการใช้แอป macOS เพื่อควบคุม Gateway ของ OpenClaw ระยะไกล
title: การควบคุมระยะไกล
x-i18n:
    generated_at: "2026-07-22T03:34:45Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 7238ff381b93223f96236246a96190ee1d62fa4313bff272ec24be9439fb7a8d
    source_path: platforms/mac/remote.md
    workflow: 16
---

โฟลว์นี้ช่วยให้แอป macOS ทำหน้าที่เป็นรีโมตคอนโทรลเต็มรูปแบบสำหรับ Gateway ของ OpenClaw ที่ทำงานอยู่บนโฮสต์อื่น (เดสก์ท็อป/เซิร์ฟเวอร์) แอปเชื่อมต่อโดยตรงกับ URL ของ Gateway บน LAN/Tailnet ที่เชื่อถือได้ หรือจัดการอุโมงค์ SSH เมื่อ Gateway ระยะไกลรับการเชื่อมต่อเฉพาะ loopback การตรวจสอบสถานะ การส่งต่อ Voice Wake และ Web Chat จะใช้การกำหนดค่าระยะไกลเดียวกันจาก _Settings -> General_

## โหมด

- **ภายในเครื่อง (Mac เครื่องนี้)**: ทุกอย่างทำงานบนแล็ปท็อป โดยไม่ใช้ SSH
- **ระยะไกลผ่าน SSH (ค่าเริ่มต้น)**: คำสั่ง OpenClaw ทำงานบนโฮสต์ระยะไกล แอปเปิดการเชื่อมต่อ SSH ด้วย `-o BatchMode` ข้อมูลประจำตัว/คีย์ที่เลือก และการส่งต่อพอร์ตภายในเครื่อง
- **ระยะไกลโดยตรง (ws/wss)**: ไม่มีอุโมงค์ SSH แอปเชื่อมต่อโดยตรงกับ URL ของ Gateway (LAN, Tailscale, Tailscale Serve หรือพร็อกซีย้อนกลับ HTTPS สาธารณะ)

## การรับส่งข้อมูลระยะไกล

- **อุโมงค์ SSH** (ค่าเริ่มต้น): ใช้ `ssh -N -L ...` เพื่อส่งต่อพอร์ตของ Gateway ไปยัง localhost โดย Gateway จะเห็น IP ของ Node เป็น `127.0.0.1` เนื่องจากอุโมงค์เป็น loopback
- **โดยตรง (ws/wss)**: เชื่อมต่อโดยตรงกับ URL ของ Gateway โดย Gateway จะเห็น IP จริงของไคลเอนต์

แอปจะปิดการมัลติเพล็กซ์การเชื่อมต่อ SSH และการทำงานเบื้องหลังหลังการยืนยันตัวตนสำหรับกระบวนการ SSH ของแอปเอง เพื่อให้สามารถตรวจสอบและเริ่มกระบวนการนั้นใหม่ได้อย่างแม่นยำ แม้ว่า alias ที่เลือกจะเปิดใช้ `ControlMaster` หรือ `ForkAfterAuthentication`

การตรวจสอบคีย์โฮสต์ SSH จะเข้มงวดตามค่าเริ่มต้น เนื่องจากข้อมูลประจำตัวของ Gateway เดินทางผ่านอุโมงค์นี้ หากต้องการเลือกใช้ลักษณะการเชื่อถือของ alias SSH ที่ได้รับการจัดการเอง ให้ตั้งค่า `--ssh-host-key-policy openssh` ผ่าน `openclaw-mac configure-remote` หรือตั้งค่า `gateway.remote.sshHostKeyPolicy` เป็น `"openssh"` โดยตรง ตรวจสอบ alias รวมถึง `Host *` ที่ตรงกันหรือการกำหนดค่าระบบก่อนเลือกใช้ การเปลี่ยนเป้าหมาย SSH (ในแอปหรือผ่าน `configure-remote`) จะรีเซ็ตนโยบายกลับเป็น `strict` เว้นแต่จะเลือกใช้อีกครั้งอย่างชัดเจนสำหรับเป้าหมายใหม่

ในโหมดอุโมงค์ SSH ชื่อโฮสต์ LAN/Tailnet ที่ค้นพบจะบันทึกเป็น `gateway.remote.sshTarget` แอปจะคง `gateway.remote.url` ไว้ที่ปลายทางอุโมงค์ภายในเครื่อง (เช่น `ws://127.0.0.1:18789`) เพื่อให้ CLI, Web Chat และบริการโฮสต์ Node ภายในเครื่องทั้งหมดใช้การรับส่งข้อมูลแบบ loopback เดียวกัน เมื่อการค้นพบส่งคืนทั้ง IP ดิบของ Tailnet และชื่อโฮสต์ที่เสถียร แอปจะเลือกใช้ชื่อ Tailscale MagicDNS หรือ LAN เพื่อให้การเชื่อมต่อทนต่อการเปลี่ยนแปลงที่อยู่ได้ดีกว่า หากพอร์ตอุโมงค์ภายในเครื่องต่างจากพอร์ต Gateway ระยะไกล ให้ตั้งค่า `gateway.remote.remotePort` เป็นพอร์ตบนโฮสต์ระยะไกล

การทำงานอัตโนมัติของเบราว์เซอร์ในโหมดระยะไกลอยู่ภายใต้การดูแลของโฮสต์ Node ของ CLI ไม่ใช่ Node ดั้งเดิมของแอป macOS แอปจะเริ่มบริการโฮสต์ Node ที่ติดตั้งไว้เมื่อทำได้ หากต้องการเปิดใช้การควบคุมเบราว์เซอร์จาก Mac เครื่องนั้น ให้ติดตั้ง/เริ่มบริการด้วย `openclaw node install ...` และ `openclaw node start` (หรือเรียกใช้ `openclaw node run ...` ในเบื้องหน้า) จากนั้นกำหนดเป้าหมายไปยัง Node ที่รองรับเบราว์เซอร์นั้น

## ข้อกำหนดเบื้องต้นบนโฮสต์ระยะไกล

1. ติดตั้ง Node + pnpm และสร้าง/ติดตั้ง OpenClaw CLI (`pnpm install && pnpm build && pnpm link --global`)
2. ตรวจสอบว่า `openclaw` อยู่ใน PATH สำหรับเชลล์แบบไม่โต้ตอบ (สร้าง symlink ไปยัง `/usr/local/bin` หรือ `/opt/homebrew/bin` หากจำเป็น)
3. สำหรับการรับส่งข้อมูลผ่าน SSH: ตั้งค่าการยืนยันตัวตน SSH ด้วยคีย์ แนะนำให้ใช้ IP ของ Tailscale เพื่อให้เข้าถึงได้อย่างเสถียรจากภายนอก LAN

## การตั้งค่าแอป macOS

หากต้องการกำหนดค่าแอปล่วงหน้าโดยไม่ผ่านโฟลว์ต้อนรับ ให้ดำเนินการผ่าน SSH:

```bash
openclaw-mac configure-remote \
  --ssh-target user@gateway-host \
  --local-port 18789 \
  --remote-port 18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

หรือสำหรับ Gateway ที่เข้าถึงได้อยู่แล้วบน LAN หรือ Tailnet ที่เชื่อถือได้ ให้ข้าม SSH ทั้งหมด:

```bash
openclaw-mac configure-remote \
  --direct-url ws://192.168.0.202:18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

`openclaw-mac connect`, `wizard` และ `configure-remote` จะระบุการกำหนดค่าที่ใช้งานอยู่ตามลำดับดังนี้: `OPENCLAW_CONFIG_PATH` จากนั้น `$OPENCLAW_STATE_DIR/openclaw.json` และ `~/.openclaw/openclaw.json` การกำหนดค่าทั้งสองรูปแบบจะเขียนไปยังไฟล์ที่ใช้งานอยู่นั้น ทำเครื่องหมายว่าการเริ่มต้นใช้งานเสร็จสมบูรณ์ และให้อำนาจแอปจัดการการรับส่งข้อมูลที่เลือกเมื่อเริ่มต้นครั้งถัดไป `--local-port`/`--remote-port` มีค่าเริ่มต้นเป็น `18789` แฟล็กอื่นๆ ได้แก่ `--password`, `--identity <path>`, `--ssh-host-key-policy <strict|openssh>`, `--project-root <path>`, `--cli-path <path>`, `--json` เรียกใช้ `openclaw-mac configure-remote --help` เพื่อดูข้อมูลอ้างอิงฉบับเต็ม

หากต้องการกำหนดค่าจาก UI แทน:

1. เปิด _Settings -> General_
2. ภายใต้ **OpenClaw runs** ให้เลือก **Remote** และตั้งค่าดังนี้:
   - **Transport**: **SSH tunnel** หรือ **Direct (ws/wss)**
   - **SSH target**: `user@host` (เลือกใช้ `:port` ได้) หาก Gateway อยู่บน LAN เดียวกันและประกาศผ่าน Bonjour ให้เลือกจากรายการที่ค้นพบเพื่อกรอกฟิลด์นี้โดยอัตโนมัติ
   - **Gateway URL** (เฉพาะ Direct): `wss://gateway.example.ts.net` (หรือ `ws://...` สำหรับภายในเครื่อง/LAN)
   - **Identity file** (ขั้นสูง): พาธไปยังคีย์
   - **Project root** (ขั้นสูง): พาธเช็กเอาต์ระยะไกลที่ใช้สำหรับคำสั่ง
   - **CLI path** (ขั้นสูง): พาธทางเลือกไปยังจุดเข้าใช้งาน/ไบนารี `openclaw` ที่เรียกใช้ได้ (กรอกโดยอัตโนมัติเมื่อมีการประกาศ)
3. กด **Test remote** หากสำเร็จ หมายความว่า `openclaw status --json` ระยะไกลทำงานอย่างถูกต้อง ความล้มเหลวมักหมายถึงปัญหา PATH/CLI ส่วนรหัสออก 127 หมายความว่าไม่พบ CLI บนโฮสต์ระยะไกล
4. ขณะนี้การตรวจสอบสถานะและ Web Chat จะทำงานผ่านการรับส่งข้อมูลที่เลือกโดยอัตโนมัติ

## Web Chat

- **อุโมงค์ SSH**: เชื่อมต่อกับ Gateway ผ่านพอร์ตควบคุม WebSocket ที่ส่งต่อมา (ค่าเริ่มต้น 18789)
- **โดยตรง (ws/wss)**: เชื่อมต่อโดยตรงกับ URL ของ Gateway ที่กำหนดค่าไว้
- ไม่มีเซิร์ฟเวอร์ HTTP สำหรับ Web Chat แยกต่างหาก

## สิทธิ์

- โฮสต์ระยะไกลต้องได้รับการอนุมัติ TCC แบบเดียวกับเครื่องภายใน (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications) ดำเนินการเริ่มต้นใช้งานบนเครื่องนั้นหนึ่งครั้งเพื่อให้สิทธิ์
- Node จะประกาศสถานะสิทธิ์ผ่าน `node.list` / `node.describe` เพื่อให้เอเจนต์ทราบว่ามีสิ่งใดพร้อมใช้งาน

## หมายเหตุด้านความปลอดภัย

- ควรเลือกการผูกกับ loopback บนโฮสต์ระยะไกล และเชื่อมต่อผ่าน SSH, Tailscale Serve หรือ URL โดยตรงของ Tailnet/LAN ที่เชื่อถือได้
- โดยค่าเริ่มต้น การสร้างอุโมงค์ SSH ต้องใช้คีย์โฮสต์ที่เชื่อถืออยู่แล้ว ให้เชื่อถือคีย์โฮสต์ก่อน (เพิ่มลงในไฟล์ known-hosts ที่กำหนดค่าไว้) หรือตั้งค่า `gateway.remote.sshHostKeyPolicy: "openssh"` อย่างชัดเจนสำหรับ alias ที่ได้รับการจัดการซึ่งยอมรับนโยบายการเชื่อถือของ OpenSSH
- หากผูก Gateway กับอินเทอร์เฟซที่ไม่ใช่ loopback ต้องใช้การยืนยันตัวตน Gateway ที่ถูกต้อง ได้แก่ โทเค็น รหัสผ่าน หรือพร็อกซีย้อนกลับที่รับรู้ข้อมูลประจำตัวพร้อม `gateway.auth.mode: "trusted-proxy"`
- ดู [ความปลอดภัย](/th/gateway/security) และ [Tailscale](/th/gateway/tailscale)

## โฟลว์การเข้าสู่ระบบ WhatsApp (ระยะไกล)

- เรียกใช้ `openclaw channels login --channel whatsapp --verbose` **บนโฮสต์ระยะไกล** สแกน QR ด้วย WhatsApp บนโทรศัพท์
- เข้าสู่ระบบอีกครั้งบนโฮสต์นั้นหากการยืนยันตัวตนหมดอายุ การตรวจสอบสถานะจะแสดงปัญหาการเชื่อมโยง

## การแก้ไขปัญหา

| อาการ                                          | สาเหตุ / วิธีแก้ไข                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `exit 127` / ไม่พบ                           | `openclaw` ไม่อยู่ใน PATH สำหรับเชลล์ที่ไม่ใช่เชลล์ล็อกอิน ให้เพิ่มลงใน `/etc/paths`, ไฟล์ rc ของเชลล์ หรือสร้าง symlink ไว้ใน `/usr/local/bin`/`/opt/homebrew/bin`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| โพรบตรวจสอบสถานะล้มเหลว                              | ตรวจสอบว่าสามารถเข้าถึงผ่าน SSH ได้, PATH ถูกต้อง และ Baileys (WhatsApp) ล็อกอินอยู่ (`openclaw status --json`)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Web Chat ค้าง                                   | ยืนยันว่า Gateway กำลังทำงานบนโฮสต์ระยะไกล และพอร์ตที่ส่งต่อตรงกับพอร์ต WS ของ Gateway โดย UI ต้องใช้การเชื่อมต่อ WS ที่ทำงานเป็นปกติ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| IP ของ Node แสดงเป็น `127.0.0.1`                        | เป็นพฤติกรรมที่คาดไว้เมื่อใช้ทันเนล SSH หากต้องการให้ Gateway เห็น IP จริงของไคลเอนต์ ให้เปลี่ยน **Transport** เป็น **Direct (ws/wss)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| แดชบอร์ดใช้งานได้ แต่ความสามารถของ Mac ออฟไลน์ | การเชื่อมต่อของผู้ควบคุม/ส่วนควบคุมทำงานเป็นปกติ แต่การเชื่อมต่อ Node คู่หูยังไม่ได้เชื่อมต่อหรือไม่มีชุดคำสั่ง เปิดส่วนอุปกรณ์ในแถบเมนูและตรวจสอบว่า Mac อยู่ในสถานะ `paired · disconnected` หรือไม่ สำหรับปลายทาง Tailscale Serve แบบ `wss://*.ts.net` แอปจะตรวจพบพินใบรับรอง TLS ปลายทางแบบเก่าที่หมดอายุหลังการหมุนเวียนใบรับรอง ล้างพินเก่าเมื่อ macOS เชื่อถือใบรับรองใหม่ แล้วลองอีกครั้งโดยอัตโนมัติ หากใบรับรองไม่ได้รับความเชื่อถือจากระบบหรือโฮสต์ไม่ใช่ชื่อ Tailscale Serve ให้ตั้งค่า `gateway.remote.tlsFingerprint` เป็นลายนิ้วมือใบรับรองที่คาดไว้ ตรวจสอบใบรับรอง หรือเปลี่ยนเป็น **Remote over SSH** |
| Voice Wake                                       | วลีเรียกใช้งานจะถูกส่งต่อโดยอัตโนมัติในโหมดระยะไกล โดยไม่ต้องใช้ตัวส่งต่อแยกต่างหาก                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## เสียงแจ้งเตือน

เลือกเสียงสำหรับการแจ้งเตือนแต่ละรายการจากสคริปต์ด้วย `openclaw nodes notify` ตัวอย่างเช่น:

```bash
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass
```

แอปไม่มีตัวเลือกสลับเสียงเริ่มต้นส่วนกลาง ผู้เรียกใช้จะเลือกเสียง (หรือไม่ใช้เสียง) สำหรับแต่ละคำขอ

## เนื้อหาที่เกี่ยวข้อง

- [แอป macOS](/th/platforms/macos)
- [การเข้าถึงระยะไกล](/th/gateway/remote)
