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

โฟลว์นี้ช่วยให้แอป macOS ทำหน้าที่เป็นรีโมตคอนโทรลเต็มรูปแบบสำหรับ Gateway ของ OpenClaw ที่ทำงานบนโฮสต์อื่น (เดสก์ท็อป/เซิร์ฟเวอร์) แอปจะเชื่อมต่อโดยตรงกับ URL ของ Gateway บน LAN/Tailnet ที่เชื่อถือได้ หรือจัดการอุโมงค์ SSH เมื่อ Gateway ระยะไกลรับการเชื่อมต่อผ่าน local 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` เนื่องจากอุโมงค์ทำงานผ่าน local loopback
- **โดยตรง (ws/wss)**: เชื่อมต่อกับ URL ของ Gateway โดยตรง Gateway จะเห็น IP จริงของไคลเอนต์

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

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

ในโหมดอุโมงค์ SSH ชื่อโฮสต์ LAN/Tailnet ที่ค้นพบจะถูกบันทึกเป็น `gateway.remote.sshTarget` แอปจะคง `gateway.remote.url` ไว้ที่ปลายทางอุโมงค์ภายในเครื่อง (ตัวอย่างเช่น `ws://127.0.0.1:18789`) เพื่อให้ CLI, Web Chat และบริการโฮสต์ Node ภายในเครื่องใช้การรับส่งข้อมูลผ่าน local 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/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` เพื่อให้เอเจนต์ทราบว่ามีสิ่งใดพร้อมใช้งานบ้าง

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

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

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

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

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

| อาการ                                          | สาเหตุ / วิธีแก้ไข                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `exit 127` / ไม่พบคำสั่ง                           | `openclaw` ไม่ได้อยู่ใน PATH สำหรับเชลล์แบบ non-login ให้เพิ่มลงใน `/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 จริงของไคลเอ็นต์ ให้เปลี่ยน **การรับส่งข้อมูล** เป็น **โดยตรง (ws/wss)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| แดชบอร์ดทำงานได้ แต่ความสามารถของ Mac ออฟไลน์ | การเชื่อมต่อของผู้ดำเนินการ/ส่วนควบคุมทำงานเป็นปกติ แต่การเชื่อมต่อ Node คู่หูยังไม่ได้เชื่อมต่อหรือไม่มีชุดคำสั่งที่จำเป็น เปิดส่วนอุปกรณ์ในแถบเมนูและตรวจสอบว่า Mac แสดงสถานะ `จับคู่แล้ว · ไม่ได้เชื่อมต่อ` หรือไม่ สำหรับปลายทาง Tailscale Serve แบบ `wss://*.ts.net` แอปจะตรวจพบพินใบรับรอง TLS รุ่นเก่าที่หมดอายุหลังการหมุนเวียนใบรับรอง ล้างพินที่หมดอายุเมื่อ macOS เชื่อถือใบรับรองใหม่แล้ว และลองใหม่โดยอัตโนมัติ หากระบบไม่เชื่อถือใบรับรองหรือโฮสต์ไม่ใช่ชื่อ Tailscale Serve ให้ตั้งค่า `gateway.remote.tlsFingerprint` เป็นลายนิ้วมือของใบรับรองที่คาดไว้ ตรวจสอบใบรับรอง หรือเปลี่ยนเป็น **ระยะไกลผ่าน SSH** |
| การปลุกด้วยเสียง                                       | วลีเรียกใช้งานจะถูกส่งต่อโดยอัตโนมัติในโหมดระยะไกล โดยไม่จำเป็นต้องมีตัวส่งต่อแยกต่างหาก                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

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

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

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

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

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

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