Configuration

การจับคู่

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

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

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

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

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

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

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

โค้ดการจับคู่:

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

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

bash
openclaw pairing list telegramopenclaw pairing approve telegram <CODE>

หากยังไม่ได้กำหนดค่าเจ้าของคำสั่ง การอนุมัติโค้ดจับคู่ DM จะบูตสแตรป commands.ownerAllowFrom ไปยังผู้ส่งที่ได้รับอนุมัติด้วย เช่น telegram:123456789 ซึ่งทำให้การตั้งค่าครั้งแรกมีเจ้าของอย่างชัดเจนสำหรับคำสั่งที่มีสิทธิ์พิเศษและพรอมป์อนุมัติ การ exec หลังจากมีเจ้าของแล้ว การอนุมัติการจับคู่ครั้งถัดไปจะให้เฉพาะการเข้าถึง 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 ระดับบนสุดเมื่อชุดผู้ส่งที่เชื่อถือได้เดียวกันควรใช้กับ หลายช่องทางข้อความ หรือใช้กับทั้งรายการอนุญาต DM และกลุ่ม

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

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
  • ที่เก็บรายการอนุญาตที่ได้รับอนุมัติ:
    • บัญชีเริ่มต้น: <channel>-allowFrom.json
    • บัญชีที่ไม่ใช่ค่าเริ่มต้น: <channel>-<accountId>-allowFrom.json

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

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

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

2) การจับคู่อุปกรณ์ Node (Node บน iOS/Android/macOS/headless)

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

จับคู่ผ่าน Telegram (แนะนำสำหรับ iOS)

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

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

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

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

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

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

ปฏิบัติต่อโค้ดตั้งค่าเหมือนรหัสผ่านระหว่างที่ยังใช้งานได้

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

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

การอนุมัติ Node อัตโนมัติด้วย trusted-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