Truyền tệp và kết nối mạng LAN trực tiếp
Agent, Exchange, CLI, bảng điều khiển web và bảng điều khiển di động hỗ trợ truyền tệp. Các thiết bị được hỗ trợ quảng cáo khả năng files.
Truyền tập tin
remote-cli file i5m ls /tmp
remote-cli file i5m upload ./example.zip /tmp/example.zip
remote-cli file i5m download /tmp/example.zip ./downloaded.zip
remote-cli file i5m fetch https://example.com/example.zip ./example.zip
Các tập tin hiện có không bị ghi đè theo mặc định; thêm --overwrite khi tải lên hoặc tải xuống để cho phép thay thế. Hủy bằng Ctrl+C trong CLI hoặc nút hủy trong bảng điều khiển trên web/di động. Sử dụng tab Files chi tiết thiết bị trên web hoặc Truyền tệp từ chi tiết thiết bị trên thiết bị di động.
Quá trình chuyển sử dụng 64 khối KiB, chờ xác nhận sau mỗi khối. Một tệp duy nhất được giới hạn ở 1 GiB; tải xuống trình duyệt bị giới hạn ở 128 MiB, vì vậy hãy sử dụng CLI hoặc bảng điều khiển di động để có các tệp lớn hơn. Danh sách thư mục trả về tối đa 1000 mục; tải lên thư mục đệ quy không được hỗ trợ. Tải lên ghi một tệp tạm thời vào thư mục đích và thay thế đích một cách nguyên tử sau khi nhận được tệp đầy đủ. Việc hủy, ngắt kết nối và hết thời gian chờ sẽ dọn sạch các tệp tạm thời chưa hoàn chỉnh. Tải xuống CLI cũng sử dụng các tệp tạm thời; tải xuống trên thiết bị di động sẽ đi tới bộ đệm và sau đó gọi chia sẻ/lưu hệ thống.
Quyền truy cập tệp sử dụng quyền hệ điều hành của quy trình Agent và không bị giới hạn trong thư mục dùng chung. Tài khoản chỉ đọc không thể liệt kê các thư mục, tải lên hoặc tải xuống. Exchange duy trì kiểm tra quyền sở hữu không gian làm việc, cách ly phiên và kiểm tra hoạt động mà không ghi lại nội dung tệp. Trên Android, . trỏ đến thư mục tệp của ứng dụng Agent; các thư mục khác vẫn phải tuân theo quyền Android và hộp cát hệ thống.
Tải xuống Internet thông qua Agent
Nhập URL HTTP/HTTPS vào tab Tệp web hoặc chạy file DEVICE fetch URL LOCAL. Agent tải xuống từ mạng riêng của nó và truyền tệp đến máy tính Console mà không lưu trên Agent. Tải xuống trên web được giới hạn ở 128 MiB; CLI tải xuống 1 GiB. Việc hủy, ngắt kết nối và lỗi sẽ loại bỏ các tệp không đầy đủ; đích CLI hiện tại yêu cầu --overwrite. Đại lý gốc (máy tính để bàn, Linux, Android và OpenWrt) hỗ trợ điều này; phần mở rộng trình duyệt không có chuyển tập tin. Xác minh chứng chỉ vẫn được bật; Các URL có thông tin xác thực được nhúng và hạ cấp HTTPS đều bị từ chối, có tối đa 5 lần chuyển hướng.
Việc tải xuống không kế thừa máy chủ quản lý --insecure.
Yêu cầu HTTP kiểu cuộn tròn
Dán lệnh cuộn tròn vào tab yêu cầu HTTP của thiết bị. Console gửi yêu cầu được niêm phong đến Agent đã chọn và hiển thị trạng thái, thời gian đã trôi qua, tiêu đề và nội dung. Nó phân tích -X/--request, -H/--header, -d/--data, --data-raw, --data-binary nội tuyến, --json, -I/--head, -L/--location, -m/--max-time và --url làm dữ liệu; nó không bao giờ thực thi các biểu thức shell hoặc đọc @file. Đại lý gốc sử dụng công cụ HTTP được chia sẻ mà không yêu cầu cuộn tròn. Tiện ích mở rộng của trình duyệt cần có quyền truy cập trang web, bỏ qua cookie của trình duyệt, từ chối các tiêu đề bị cấm và báo cáo chuyển hướng bị Chrome ẩn; sử dụng URL cuối cùng. Cấp quyền chỉ đọc không thể gửi yêu cầu. Nội dung yêu cầu được giới hạn ở 256 KiB và thời gian chờ là 120 giây; phản hồi được cắt ngắn ở mức 1 MiB trên Đại lý gốc hoặc 128 KiB trong tiện ích mở rộng. Sử dụng tìm nạp tệp để tải xuống nhị phân hoặc lớn hơn.
Tin nhắn được niêm phong là net_req. Khả năng trình duyệt: net. CLI tương đương: remote-cli net DEVICE http URL -X POST -H 'Content-Type: application/json' -d '{"message":"hello"}'
curl -X POST 'https://example.com/api' -H 'Content-Type: application/json' --data-raw '{"message":"hello"}'
Cổng điều khiển mạng LAN
Kiểm soát mạng LAN bị tắt theo mặc định, với cổng TCP mặc định 7277. Chỉ kích hoạt nó trên mạng LAN đáng tin cậy. Trước khi bật, thiết bị phải ghim gốc không gian làm việc của nó (remote-agent seal root hoặc kết nối với Exchange trước để hoàn thành TOFU). Không có mã thông báo truy cập mạng LAN. Không chuyển tiếp cổng tới Internet công cộng.
Thêm các trường này vào cấu hình JSON Agent hiện có:
{
"lan_enabled": true,
"lan_port": 7277
}
Giữ các trường server, device_id và token hiện có. Ngoài ra, hãy sử dụng --lan-enabled, --lan-port hoặc REMOTE_LAN_ENABLED, REMOTE_LAN_PORT. Việc bật mạng LAN mà không ghim gốc không gian làm việc sẽ khiến quá trình khởi động không thành công.
Cả cấu hình máy tính để bàn và cài đặt LuCI đều cung cấp một công tắc. Khởi động lại Agent sau khi thay đổi nó; cấu hình máy tính để bàn yêu cầu dừng kết nối trước khi chỉnh sửa. Tắt công tắc và khởi động lại sẽ ngừng nghe trên cổng này. Chương trình không tự động thêm các quy tắc tường lửa.
Đối với các kết nối trực tiếp CLI, hãy viết một cấu hình riêng thay vì sử dụng login (yêu cầu mã thông báo không trống). Đặt server thành http://IP:7277 của thiết bị và để trống token; yêu cầu không mang tiêu đề Authorization:
server = "http://192.168.1.20:7277"
token = ""
Trỏ REMOTE_CLI_CONFIG vào tệp này để giữ lại thông tin đăng nhập vào đám mây riêng. Danh tính được niêm phong và bộ đệm cấp phép trực tiếp bên cạnh cấu hình này: cấp phép ngoại tuyến trong seal-grants.json và chuỗi chứng chỉ gốc đầu tiên trong seal-chains.json. Tất cả các hoạt động của thiết bị chỉ mở các phiên kín, bao gồm các kết nối trực tiếp có thẻ thiết bị có local hoặc có điểm cuối LAN /api/auth/me trả về 401. Agent không phát hành cũng như không gia hạn các khoản cấp phép này. Trong khi đám mây ngoại tuyến, chỉ những cấp phép chuỗi gốc vẫn hợp lệ trong bộ đệm mới có thể sử dụng được. sessions và session-kill không khả dụng: LAN không có thư mục phiên và Exchange tiếp tục quản lý các phiên của thiết bị.
Kết nối trực tiếp chỉ hiển thị thiết bị cục bộ. Lớp bên ngoài chỉ chấp nhận các địa chỉ riêng tư, liên kết cục bộ hoặc vòng lặp và xác thực Origin. Sau những lần kiểm tra này, GET /api/devices chỉ trả về ID thiết bị và seal_key / seal_mode cần thiết để bắt đầu quá trình bắt tay kín. GET /api/auth/me không trả về danh tính người vận hành trước khi bắt tay kín. GET /ws/operator chỉ chấp nhận các phiên kín và không cung cấp đường dẫn tương thích với văn bản gốc.
Máy khách bao gồm bằng chứng khóa công khai của nhà điều hành, cấp phép ngoại tuyến được lưu trong bộ nhớ đệm (hello.grant) và chuỗi chứng chỉ gốc đầu tiên tùy chọn (hello.chain) nội tuyến trong open_sealed hello. Thiết bị áp dụng các quy tắc tương tự như đường dẫn Exchange để xác thực thư mục gốc cục bộ, phạm vi thiết bị và quyền xem/quản lý, đồng thời giữ kín nội dung phiên. Bảng điều khiển web tiếp tục kết nối thông qua Exchange. Theo mặc định, trình nghe liên kết tất cả các giao diện IPv4 và vẫn có thể sử dụng được khi đám mây ngoại tuyến. Lỗi liên kết mạng LAN được ghi lại trong khi tiếp tục kết nối lại đám mây.
Xác thực hồi quy
python scripts/file-transfer-smoke.py --agent target/debug/remote-agent --cli target/debug/remote-cli
python scripts/agent-ui-smoke.py --agent target/debug/remote-agent --platform linux
Yêu cầu Python 3.11+ và websockets. Trên Windows sử dụng đường dẫn .exe và --platform windows. Các thử nghiệm sử dụng các tệp và cấu hình tạm thời mà không thay đổi thông tin đăng nhập hoặc thiết bị hiện có.