# 会话临时 SSH 授权 用户可以直接说“到 78 检查磁盘”或“到 192.168.28.127 排查服务”。Agent 使用 `ssh_request_temporary_access` 按已保存的主机名、完整 IP 或唯一 IPv4 尾号申请授权。目标存在歧义时必须进一步明确,不能自动选择。 插件直接核对当前执行轮次里来源为 `user` 的真实消息,不再依赖 DSH 审批弹窗。明确的指令(如“请到 fnos 检查磁盘”)可直接建立本轮授权;引文、提问、否定、旧聊天、工具返回和后台通知都不能当成用户授意。判定采用保守规则,不保证理解所有自然语言表达;不明确时返回 `granted=false / SSH_USER_CONSENT_REQUIRED` 和完整范围,由 Agent 展示后等待用户在聊天中回复“确认临时访问”。 简短确认仅对应本会话刚才的一次申请,有效期 10 分钟,必须保持主机配置、任务说明和指定看板任务不变;不能拿同一句确认改换目标。申请返回 `granted=true` 后才能调用 `ssh_temporary_exec`,工具结果保留授权范围以便核查。 普通授权以 Agent 当前执行轮次为界:本轮结束、用户停止、Agent 报错、会话释放或插件重载时失效。下一轮需要新的明确授意。授权只保存在内存中,不改变手动挂载,不自动继承到子会话,主机配置改变后需要重新确认。 ## 看板委派 1. 创建有明确执行伙伴的任务,设置 `autoRun=false`,不要先启动无权限的执行。 2. 创建者会话调用 `ssh_request_temporary_access`,传入 `target`、`task` 和该任务的 `taskId`。插件从伙伴服务核验任务归属、要求和执行者;用户消息须明确包含该执行伙伴,否则完整展示范围后等待一次聊天确认。 3. 返回 `granted=true` 后,提交同一任务。伙伴运行器把授权绑定到该任务的真实执行会话,并告知执行者主机 `profileId`;执行者直接用 `ssh_temporary_exec`,不重复申请。 4. 只允许一次任务执行,最长 60 分钟(包括排队)。正常结束、取消、超时、改派、要求变更、SSH 能力撤回或重启后不可复用;自动重试和验收者不继承。到期或取消会中断当前受此授权控制的本地 SSH 调用,不保证远端自行启动的后台程序随之退出。 这不是所有伙伴共享主机权限:创建者没有因此取得执行者的权限,其他任务和会话也不能使用。授权不是持久化重试凭证;重启后必须重新授权。待授权申请和委派授权均只保存在内存。 临时入口提供命令执行及 `cwd`,不自动授权文件传输工具、交互终端或端口转发。任务说明用于用户确认和审计,不是逐条命令的语义沙箱。用户授权后主动启动的远端后台进程不会因授权撤销而自动删除或停止。