Configuration
การจับคู่
"การจับคู่" คือขั้นตอนการอนุมัติการเข้าถึงอย่างชัดเจนของ OpenClaw ใช้ในสองจุด:
- การจับคู่ DM (ใครบ้างที่ได้รับอนุญาตให้คุยกับบอต)
- การจับคู่ Node (อุปกรณ์/โหนดใดบ้างที่ได้รับอนุญาตให้เข้าร่วมเครือข่าย Gateway)
บริบทความปลอดภัย: ความปลอดภัย
1) การจับคู่ DM (การเข้าถึงแชตขาเข้า)
เมื่อกำหนดค่าช่องทางด้วยนโยบาย DM pairing ผู้ส่งที่ไม่รู้จักจะได้รับรหัสสั้น และข้อความของพวกเขาจะ ไม่ถูกประมวลผล จนกว่าคุณจะอนุมัติ
นโยบาย DM เริ่มต้นมีเอกสารไว้ใน: ความปลอดภัย
dmPolicy: "open" จะเป็นสาธารณะก็ต่อเมื่อ allowlist ของ DM ที่มีผลมี "*" อยู่ด้วย
การตั้งค่าและการตรวจสอบความถูกต้องต้องใช้ wildcard นี้สำหรับการกำหนดค่าแบบเปิดสาธารณะ หากสถานะที่มีอยู่
มี open พร้อมรายการ allowFrom แบบเจาะจง runtime จะยังคงยอมรับ
เฉพาะผู้ส่งเหล่านั้น และการอนุมัติในคลังการจับคู่จะไม่ขยายการเข้าถึงแบบ open
รหัสการจับคู่:
- 8 อักขระ ตัวพิมพ์ใหญ่ ไม่มีอักขระที่สับสนได้ (
0O1I) - หมดอายุหลังจาก 1 ชั่วโมง บอตจะส่งข้อความจับคู่เฉพาะเมื่อมีการสร้างคำขอใหม่ (ประมาณหนึ่งครั้งต่อชั่วโมงต่อผู้ส่ง)
- คำขอจับคู่ DM ที่รอดำเนินการถูกจำกัดไว้ที่ 3 รายการต่อช่องทาง โดยค่าเริ่มต้น คำขอเพิ่มเติมจะถูกละเว้นจนกว่ารายการหนึ่งจะหมดอายุหรือได้รับการอนุมัติ
อนุมัติผู้ส่ง
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 ของช่องทาง:
{ 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:
- เปิด Control UI แล้วเลือก Nodes
- ใน Devices ให้คลิก Pair mobile device
- บนโทรศัพท์ของคุณ เปิดแอป OpenClaw → Settings → Gateway
- สแกนรหัส QR หรือวางรหัสตั้งค่า แล้วเชื่อมต่อ
แอป OpenClaw สำหรับ iOS และ Android อย่างเป็นทางการจะได้รับการอนุมัติโดยอัตโนมัติเมื่อ เมทาดาทาของรหัสตั้งค่าตรงกัน หาก Devices แสดงคำขอที่รอดำเนินการ (เช่น สำหรับไคลเอนต์ที่ไม่เป็นทางการหรือเมทาดาทาไม่ตรงกัน) ให้ตรวจสอบบทบาทและ ขอบเขตก่อนอนุมัติ
ปุ่มจะถูกปิดใช้งานเมื่อเซสชัน Control UI ปัจจุบันไม่มีสิทธิ์ ผู้ดูแลระบบ ในกรณีนั้น ให้ใช้ flow การอนุมัติผ่าน CLI ด้านล่างจากโฮสต์ Gateway
จับคู่ผ่าน Telegram
หากคุณใช้ Plugin device-pair คุณสามารถทำการจับคู่อุปกรณ์ครั้งแรกทั้งหมดจาก Telegram ได้:
- ใน Telegram ให้ส่งข้อความถึงบอตของคุณ:
/pair - บอตจะตอบกลับด้วยข้อความสองรายการ: ข้อความคำแนะนำและข้อความ รหัสตั้งค่า แยกต่างหาก (คัดลอก/วางใน Telegram ได้ง่าย)
- บนโทรศัพท์ของคุณ เปิดแอป OpenClaw iOS → Settings → Gateway
- สแกนรหัส QR หรือวางรหัสตั้งค่าแล้วเชื่อมต่อ
- แอปมือถืออย่างเป็นทางการจะเชื่อมต่อโดยอัตโนมัติ หาก
/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
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 แบบเจาะจง:
{ 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 ยังคงต้องใช้การจับคู่อุปกรณ์ - บันทึกการจับคู่คือแหล่งความจริงถาวรสำหรับบทบาทที่ได้รับอนุมัติ โทเค็นอุปกรณ์ ที่ใช้งานอยู่ยังคงถูกจำกัดไว้ตามชุดบทบาทที่ได้รับอนุมัตินั้น รายการโทเค็นที่หลุดอยู่นอก บทบาทที่ได้รับอนุมัติจะไม่สร้างการเข้าถึงใหม่