Configuration

การจับคู่

"การจับคู่" คือขั้นตอนการอนุมัติการเข้าถึงอย่างชัดเจนของ OpenClaw ใช้ในสองจุด:

  1. การจับคู่ DM (ใครบ้างที่ได้รับอนุญาตให้คุยกับบอต)
  2. การจับคู่ Node (อุปกรณ์/โหนดใดบ้างที่ได้รับอนุญาตให้เข้าร่วมเครือข่าย Gateway)

บริบทความปลอดภัย: ความปลอดภัย

1) การจับคู่ DM (การเข้าถึงแชตขาเข้า)

เมื่อกำหนดค่าช่องทางด้วยนโยบาย DM pairing ผู้ส่งที่ไม่รู้จักจะได้รับรหัสสั้น และข้อความของพวกเขาจะ ไม่ถูกประมวลผล จนกว่าคุณจะอนุมัติ

นโยบาย DM เริ่มต้นมีเอกสารไว้ใน: ความปลอดภัย

dmPolicy: "open" จะเป็นสาธารณะก็ต่อเมื่อ allowlist ของ DM ที่มีผลมี "*" อยู่ด้วย การตั้งค่าและการตรวจสอบความถูกต้องต้องใช้ wildcard นี้สำหรับการกำหนดค่าแบบเปิดสาธารณะ หากสถานะที่มีอยู่ มี open พร้อมรายการ allowFrom แบบเจาะจง runtime จะยังคงยอมรับ เฉพาะผู้ส่งเหล่านั้น และการอนุมัติในคลังการจับคู่จะไม่ขยายการเข้าถึงแบบ open

รหัสการจับคู่:

  • 8 อักขระ ตัวพิมพ์ใหญ่ ไม่มีอักขระที่สับสนได้ (0O1I)
  • หมดอายุหลังจาก 1 ชั่วโมง บอตจะส่งข้อความจับคู่เฉพาะเมื่อมีการสร้างคำขอใหม่ (ประมาณหนึ่งครั้งต่อชั่วโมงต่อผู้ส่ง)
  • คำขอจับคู่ DM ที่รอดำเนินการถูกจำกัดไว้ที่ 3 รายการต่อช่องทาง โดยค่าเริ่มต้น คำขอเพิ่มเติมจะถูกละเว้นจนกว่ารายการหนึ่งจะหมดอายุหรือได้รับการอนุมัติ

อนุมัติผู้ส่ง

bash
openclaw pairing list telegramopenclaw pairing approve telegram <CODE>

หากยังไม่ได้กำหนดค่าเจ้าของคำสั่ง การอนุมัติรหัสจับคู่ DM จะบูตสแตรป commands.ownerAllowFrom ให้เป็นผู้ส่งที่ได้รับอนุมัติด้วย เช่น telegram:123456789 สิ่งนี้ทำให้การตั้งค่าครั้งแรกมีเจ้าของอย่างชัดเจนสำหรับคำสั่งที่มีสิทธิ์สูงและพรอมป์อนุมัติ การดำเนินการ หลังจากมีเจ้าของแล้ว การอนุมัติการจับคู่ในภายหลังจะให้สิทธิ์ เข้าถึง DM เท่านั้น โดยจะไม่เพิ่มเจ้าของเพิ่มเติม

ช่องทางที่รองรับ: discord, feishu, googlechat, imessage, irc, line, matrix, mattermost, msteams, nextcloud-talk, nostr, openclaw-weixin, signal, slack, synology-chat, telegram, twitch, whatsapp, zalo, zalouser.

กลุ่มผู้ส่งที่ใช้ซ้ำได้

ใช้ accessGroups ระดับบนสุดเมื่อชุดผู้ส่งที่เชื่อถือได้ชุดเดียวกันควรใช้กับ หลายช่องทางข้อความ หรือใช้กับทั้ง allowlist ของ DM และกลุ่ม

กลุ่มแบบคงที่ใช้ type: "message.senders" และอ้างอิงด้วย accessGroup:<name> จาก allowlist ของช่องทาง:

json5
{  accessGroups: {    operators: {      type: "message.senders",      members: {        discord: ["discord:123456789012345678"],        telegram: ["987654321"],        whatsapp: ["+15551234567"],      },    },  },  channels: {    telegram: { dmPolicy: "allowlist", allowFrom: ["accessGroup:operators"] },    whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["accessGroup:operators"] },  },}

กลุ่มการเข้าถึงมีเอกสารโดยละเอียดที่นี่: กลุ่มการเข้าถึง

ตำแหน่งที่เก็บสถานะ

จัดเก็บไว้ใต้ ~/.openclaw/credentials/:

  • คำขอที่รอดำเนินการ: <channel>-pairing.json
  • คลัง allowlist ที่ได้รับอนุมัติ:
    • บัญชีเริ่มต้น: <channel>-allowFrom.json
    • บัญชีที่ไม่ใช่ค่าเริ่มต้น: <channel>-<accountId>-allowFrom.json

พฤติกรรมการกำหนดขอบเขตบัญชี:

  • บัญชีที่ไม่ใช่ค่าเริ่มต้นจะอ่าน/เขียนเฉพาะไฟล์ allowlist ที่กำหนดขอบเขตของตน
  • บัญชีเริ่มต้นใช้ไฟล์ allowlist แบบไม่กำหนดขอบเขตเฉพาะบัญชีของช่องทาง

ถือว่าสิ่งเหล่านี้เป็นข้อมูลอ่อนไหว (เพราะเป็นด่านควบคุมการเข้าถึงผู้ช่วยของคุณ)

2) การจับคู่อุปกรณ์ Node (iOS/Android/macOS/Node แบบไม่มีหน้าจอ)

Node เชื่อมต่อกับ Gateway ในฐานะ อุปกรณ์ ด้วย role: node Gateway จะสร้างคำขอจับคู่อุปกรณ์ที่ต้องได้รับการอนุมัติ

จับคู่จาก Control UI (แนะนำ)

ใช้เซสชัน Control UI ที่เชื่อมต่ออยู่แล้วและมีสิทธิ์ operator.admin:

  1. เปิด Control UI แล้วเลือก Nodes
  2. ใน Devices ให้คลิก Pair mobile device
  3. บนโทรศัพท์ของคุณ เปิดแอป OpenClaw → SettingsGateway
  4. สแกนรหัส QR หรือวางรหัสตั้งค่า แล้วเชื่อมต่อ

แอป OpenClaw สำหรับ iOS และ Android อย่างเป็นทางการจะได้รับการอนุมัติโดยอัตโนมัติเมื่อ เมทาดาทาของรหัสตั้งค่าตรงกัน หาก Devices แสดงคำขอที่รอดำเนินการ (เช่น สำหรับไคลเอนต์ที่ไม่เป็นทางการหรือเมทาดาทาไม่ตรงกัน) ให้ตรวจสอบบทบาทและ ขอบเขตก่อนอนุมัติ

ปุ่มจะถูกปิดใช้งานเมื่อเซสชัน Control UI ปัจจุบันไม่มีสิทธิ์ ผู้ดูแลระบบ ในกรณีนั้น ให้ใช้ flow การอนุมัติผ่าน CLI ด้านล่างจากโฮสต์ Gateway

จับคู่ผ่าน Telegram

หากคุณใช้ Plugin device-pair คุณสามารถทำการจับคู่อุปกรณ์ครั้งแรกทั้งหมดจาก Telegram ได้:

  1. ใน Telegram ให้ส่งข้อความถึงบอตของคุณ: /pair
  2. บอตจะตอบกลับด้วยข้อความสองรายการ: ข้อความคำแนะนำและข้อความ รหัสตั้งค่า แยกต่างหาก (คัดลอก/วางใน Telegram ได้ง่าย)
  3. บนโทรศัพท์ของคุณ เปิดแอป OpenClaw iOS → Settings → Gateway
  4. สแกนรหัส QR หรือวางรหัสตั้งค่าแล้วเชื่อมต่อ
  5. แอปมือถืออย่างเป็นทางการจะเชื่อมต่อโดยอัตโนมัติ หาก /pair pending แสดง คำขอ ให้ตรวจสอบบทบาทและขอบเขตก่อนอนุมัติ

รหัสตั้งค่าเป็นเพย์โหลด JSON ที่เข้ารหัสแบบ base64 ซึ่งมี:

  • url: URL WebSocket ของ Gateway (ws://... หรือ wss://...)
  • bootstrapToken: โทเค็นบูตสแตรปแบบอายุสั้นสำหรับอุปกรณ์เดียวที่ใช้สำหรับ handshake การจับคู่ครั้งแรก

โทเค็นบูตสแตรปนั้นมีโปรไฟล์บูตสแตรปการจับคู่ในตัว:

  • โปรไฟล์ตั้งค่าในตัวอนุญาตเฉพาะ baseline ของ QR/รหัสตั้งค่าใหม่เท่านั้น: node พร้อมการส่งต่อ operator แบบจำกัดขอบเขต
  • โทเค็น node ที่ถูกส่งต่อยังคงเป็น scopes: []
  • โทเค็น operator ที่ถูกส่งต่อถูกจำกัดไว้ที่ operator.approvals, operator.read, operator.talk.secrets และ operator.write
  • operator.admin จะไม่ได้รับจากบูตสแตรป QR/รหัสตั้งค่า โดยต้องใช้ การจับคู่ operator ที่ได้รับอนุมัติหรือ flow โทเค็นแยกต่างหาก
  • การหมุนเวียน/เพิกถอนโทเค็นในภายหลังยังคงถูกจำกัดทั้งโดยสัญญาบทบาท ที่ได้รับอนุมัติของอุปกรณ์ และขอบเขต operator ของเซสชันผู้เรียก

ถือว่ารหัสตั้งค่าเป็นเหมือนรหัสผ่านตราบเท่าที่ยังมีผล

สำหรับ Tailscale การจับคู่มือถือแบบสาธารณะ หรือระยะไกลอื่น ๆ ให้ใช้ Tailscale Serve/Funnel หรือ URL Gateway แบบ wss:// อื่น ๆ รหัสตั้งค่าแบบข้อความไม่เข้ารหัส ws:// จะยอมรับเฉพาะ สำหรับ loopback, ที่อยู่ LAN ส่วนตัว, โฮสต์ Bonjour .local และโฮสต์ emulator Android เท่านั้น ที่อยู่ Tailnet CGNAT, ชื่อ .ts.net และโฮสต์สาธารณะยังคง ปิดกั้นก่อนออก QR/รหัสตั้งค่า

อนุมัติอุปกรณ์ Node

bash
openclaw devices listopenclaw devices approve <requestId>openclaw devices reject <requestId>

เมื่อการอนุมัติแบบชัดเจนถูกปฏิเสธเพราะเซสชันอุปกรณ์ที่จับคู่ซึ่งใช้อนุมัติ ถูกเปิดด้วยขอบเขตสำหรับการจับคู่เท่านั้น CLI จะลองส่งคำขอเดิมอีกครั้งด้วย operator.admin วิธีนี้ทำให้อุปกรณ์ที่จับคู่แล้วและมีความสามารถระดับผู้ดูแลระบบสามารถกู้คืนการจับคู่ Control UI/เบราว์เซอร์ใหม่ได้โดยไม่ต้องแก้ไข devices/paired.json ด้วยมือ Gateway ยังคงตรวจสอบการเชื่อมต่อที่ลองใหม่ โทเค็นที่ไม่สามารถยืนยันตัวตน ด้วย operator.admin จะยังคงถูกบล็อก

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

การอนุมัติ Node อัตโนมัติด้วย CIDR ที่เชื่อถือได้แบบไม่บังคับ

การจับคู่อุปกรณ์ยังคงเป็นแบบแมนนวลโดยค่าเริ่มต้น สำหรับเครือข่าย Node ที่ควบคุมอย่างเข้มงวด คุณสามารถเลือกใช้การอนุมัติ Node ครั้งแรกโดยอัตโนมัติด้วย CIDR หรือ IP แบบเจาะจง:

json5
{  gateway: {    nodes: {      pairing: {        autoApproveCidrs: ["192.168.1.0/24"],      },    },  },}

สิ่งนี้ใช้เฉพาะกับคำขอจับคู่ role: node ใหม่ที่ไม่มีการขอ ขอบเขตเท่านั้น ไคลเอนต์ operator, เบราว์เซอร์, Control UI และ WebChat ยังคงต้องมีการอนุมัติ แบบแมนนวล การเปลี่ยนแปลงบทบาท ขอบเขต เมทาดาทา และกุญแจสาธารณะยังคงต้องมีการอนุมัติ แบบแมนนวล

การจัดเก็บสถานะการจับคู่ Node

จัดเก็บไว้ใต้ ~/.openclaw/devices/:

  • pending.json (อายุสั้น คำขอที่รอดำเนินการจะหมดอายุ)
  • paired.json (อุปกรณ์ที่จับคู่แล้ว + โทเค็น)

หมายเหตุ

  • API เดิม node.pair.* (CLI: openclaw nodes pending|approve|reject|remove|rename) เป็น คลังการจับคู่ที่ Gateway เป็นเจ้าของแยกต่างหาก Node แบบ WS ยังคงต้องใช้การจับคู่อุปกรณ์
  • บันทึกการจับคู่คือแหล่งความจริงถาวรสำหรับบทบาทที่ได้รับอนุมัติ โทเค็นอุปกรณ์ ที่ใช้งานอยู่ยังคงถูกจำกัดไว้ตามชุดบทบาทที่ได้รับอนุมัตินั้น รายการโทเค็นที่หลุดอยู่นอก บทบาทที่ได้รับอนุมัติจะไม่สร้างการเข้าถึงใหม่

เอกสารที่เกี่ยวข้อง

Was this useful?
On this page

On this page