Token导航 LogoToken导航

Agent Skill · 效率

ssh-handoff(ssh 切换)

ssh-handoff 用于辅助安全审计、权限检查和凭据风险排查,适合在 OpenClaw 中需要复核安全边界、认证流程或敏感配置时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

ssh-handoff 是效率类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为操作浏览器;许可证为 MIT-0,第三方扫描有提醒项,按安装量在效率类的 21,003 个 Skill 里排第 14,662。

总安装 3,326周安装 140GitHub Stars 公开资料未说明下载 1,165核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.1

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ssh-handoff(ssh 切换)
来源仓库:https://github.com/jonathan97480/ssh-handoff
安装命令:
openclaw skills install ssh-handoff
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install ssh-handoff

这个 Skill 是做什么的

效率类 Skill 把重复的整理、汇总、转换工作交给助手完成,减少手工复制粘贴。

创建安全的共享终端切换会话用于权限交接。支持身份验证后恢复 shell 会话上下文。适用于运维交接或多用户协作审计场景。ssh-handoff 属于效率类 Skill,可作为该场景下的辅助能力补充。安装命令:openclaw skills install ssh-handoff。使用前应检查会话隔离性与日志记录完整性。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install ssh-handoff;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

ssh-handoff 怎么安装?

在终端执行 openclaw skills install ssh-handoff。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

ssh-handoff 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

ssh-handoff 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

ssh-handoff 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

ssh-handoff 用的人多吗?

公开数据是累计安装 3,326 次,近一周安装 140 次,下载 1,165 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

ssh-handoff 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理效率类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

效率类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
github

GitHub 代码协作 · OpenClaw

7,632,918545需要联网MIT-0通过
nano-pdf

Nano PDF 文档 · OpenClaw

4,249,476231需要联网MIT-0通过
auto-updater

自动更新程序 · OpenClaw

2,964,063386操作浏览器MIT-0通过
video-frames

视频帧 · OpenClaw

2,621,304112需要联网MIT-0通过
gemini

Gemini 助手 · OpenClaw

2,547,39648需要联网MIT-0有提醒
ssh-handoff

ssh 切换 · 本页

3,326—操作浏览器MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
ssh-handoff
description
Create and reuse a secure shared terminal handoff when a human must authenticate first and the agent must resume work in the same shell session afterward. Use for SSH handoff, sudo handoff, browser-opened temporary terminal access, or LAN-restricted terminal sharing backed by tmux when direct agent authentication is blocked or undesirable.

SSH Handoff

Use this skill when a human must complete a sensitive authentication step first, and the agent should continue in the exact same shell session afterward.

The core pattern is:

  1. keep terminal state in a named tmux session
  2. let the human attach and authenticate inside that session
  3. capture the pane state
  4. let the agent continue from the same shell

Prefer this skill when the user should not paste credentials into chat and when direct agent authentication is blocked, undesirable, or less safe than a shared-session handoff.

Choose the simplest mode

Prefer Mode A unless browser access is actually needed.

Mode A — plain tmux handoff

Use when the human already has terminal access to the host.

Typical flow:

  1. create or reuse a named tmux session
  2. ask the human to attach
  3. let the human authenticate
  4. capture the pane
  5. continue through tmux

Example:

tmux has-session -t handoff-session 2>/dev/null || tmux new-session -d -s handoff-session
tmux attach -t handoff-session

Mode B — local browser terminal

Use when the human wants a browser-based terminal on the same machine that hosts the service.

This mode uses ttyd directly and fits:

  • localhost-only access
  • quick temporary sessions
  • cases where basic auth is acceptable

Bundled launcher:

./scripts/start-local-web-terminal.sh handoff-session

Mode C — LAN-restricted browser terminal with one-shot token

Use when the human opens the terminal from another trusted machine on the same local network and you want less friction than repeated username/password entry.

This mode works like this:

  1. a named tmux session holds the real shell state
  2. ttyd runs on localhost as the terminal backend
  3. a small local proxy exposes a LAN URL with a one-shot ?token=
  4. the first valid request becomes a browser session through a cookie
  5. the agent continues using the same tmux session

Bundled launcher:

./scripts/start-url-token-web-terminal.sh handoff-session

Requirements

Check these first:

command -v tmux
command -v ttyd
command -v node
command -v python3

Install on Debian / Ubuntu:

sudo apt update && sudo apt install -y tmux ttyd

node must also exist for Mode C because the proxy launcher uses the bundled Node script.

Quick usage

Create or reuse the session

tmux has-session -t handoff-session 2>/dev/null || tmux new-session -d -s handoff-session

Launch Mode C with placeholders

Use placeholders that match the environment instead of copying real addresses blindly. The 192.0.2.x addresses below are documentation-only example addresses.

HOST=<server-ip> CLIENT_IP=<trusted-client-ip> PORT=48080 UPSTREAM_PORT=48081 FORBID_REUSE_IF_AUTHENTICATED=1 ./scripts/start-url-token-web-terminal.sh handoff-session

The launcher prints:

  • one-shot URL
  • expiry time
  • proxy and backend PIDs
  • cleanup command
  • optional UFW helper commands

Example with documentation-only IPs:

HOST=192.0.2.10 CLIENT_IP=192.0.2.20 PORT=48080 UPSTREAM_PORT=48081 FORBID_REUSE_IF_AUTHENTICATED=1 ./scripts/start-url-token-web-terminal.sh handoff-session

Resume after authentication

Always inspect the pane before assuming the handoff worked:

tmux capture-pane -t handoff-session -p | tail -80

Look for:

  • remote hostname or expected prompt
  • expected working directory
  • absence of a password prompt
  • absence of a terminal program that would swallow commands unexpectedly

If uncertain, ask one short confirmation question before continuing.

Launcher variables

start-local-web-terminal.sh

Supported variables:

  • HOST — bind address, default 127.0.0.1
  • PORT — optional explicit port, otherwise a random free port
  • TTL_MINUTES — default 30
  • BIND_SCOPE — metadata only, usually local or lan
  • CLIENT_IP — optional, used only to print UFW helper commands in LAN mode

start-url-token-web-terminal.sh

Supported variables:

  • HOST — proxy bind address, default 127.0.0.1
  • PORT — proxy frontend port, default 48080
  • UPSTREAM_PORT — localhost ttyd backend port, default 48081
  • CLIENT_IP — optional trusted client IP for UFW helper commands and proxy-side IP filtering
  • TTL_MINUTES — default 30
  • BIND_SCOPE — metadata only, usually local or lan
  • COOKIE_SECURE — set to 1 when serving through local HTTPS so the session cookie gets the Secure flag
  • EXPECTED_HOST — strict allowed Host header, default <HOST>:<PORT>
  • EXPECTED_ORIGIN — strict allowed websocket Origin, default derived from host and cookie mode
  • FORBID_REUSE_IF_AUTHENTICATED — set to 1 to refuse startup if the tmux pane already looks authenticated
  • REPLACE_EXISTING — set to 1 only after the human explicitly approves replacing the current web handoff for the same SESSION_NAME; otherwise the launcher prints the existing URL/PIDs/cleanup command and exits without touching the running session
  • AUTH_GUARD_REGEX — optional override for the pane-authentication detection regex

If the default ports are already occupied, override them explicitly.

When a handoff already exists for the same SESSION_NAME, the launcher does not silently start a second one: it reports the existing session details and exits with READY=0. Ask the human whether to replace it. Use REPLACE_EXISTING=1 only after explicit approval.

If the requested proxy or upstream port is already occupied, the launcher also exits with READY=0 and reports a port conflict instead of killing anything automatically. In that case, either get approval to replace the conflicting session or relaunch on another port and update firewall rules if LAN access is involved.

Use Mode C correctly

  1. ensure the tmux session exists
  2. launch the token-based terminal
  3. if needed, allow access only from the trusted client IP
  4. send the printed one-shot URL to the human through an appropriate channel
  5. let the human authenticate inside the terminal
  6. capture the pane and verify state
  7. continue through tmux
  8. if the launcher reports an existing session or a port conflict, ask whether to replace it or use a different port
  9. stop the temporary web terminal when done

Cleanup

For Mode B, use:

./scripts/stop-local-web-terminal.sh <pid> <session-name>

For Mode C, prefer the printed cleanup command because it removes both temporary processes and the temporary runtime directory:

TTYD_PID=<ttyd-pid> PROXY_PID=<proxy-pid> RUNTIME_DIR=<runtime-dir> <cleanup-script>

If that command is unavailable, killing the printed proxy and backend PIDs is still acceptable.

The launcher also installs automatic TTL cleanup for the proxy, ttyd, and temporary files. Leave the tmux session alive if it may be reused.

Guardrails

  • Keep exposure local-only by default.
  • If LAN exposure is needed, restrict it to one trusted client IP only.
  • Do not expose the terminal through a public tunnel or reverse proxy.
  • Do not ask the human to paste passwords, OTP codes, or private keys into chat if the handoff can avoid it.
  • Use short-lived access material for browser modes.
  • Prefer one tmux session per target or task.
  • Capture pane state before sending more commands.
  • Ask before destructive actions.
  • Enable FORBID_REUSE_IF_AUTHENTICATED=1 by default for normal use; disable it only when reopening an already-authenticated session is intentional.
  • Treat the printed one-shot URL as sensitive until expiry.
  • Expect the proxy to reject mismatched Host, websocket Origin, or client IP when those checks are configured.
  • Do not suggest or launch browser-terminal modes casually from external messaging channels such as Telegram, Discord, Slack, or similar remote chat surfaces.
  • Prefer plain tmux handoff instead when the interaction happens over an external channel, unless the human explicitly confirms a trusted local-network setup and accepts the risk.

References

Read these when needed:

  • references/examples.md — generic usage examples
  • references/design-notes.md — security and design envelope
  • references/lan-restricted.md — LAN-only restricted-IP pattern

Bundled scripts:

  • scripts/start-local-web-terminal.sh
  • scripts/start-url-token-web-terminal.sh
  • scripts/stop-local-web-terminal.sh
  • scripts/url-token-proxy.js

平台分布

OpenClaw

97.91%
按下载量换算1,141

安全审计

VirusTotal

可疑

ClawScan

通过

Static analysis

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills