Remote SSH Execution Skill 用于通过 SSH 在远程服务器上执行命令和管理文件,并借助持久连接复用会话。
【用途】 当用户提到远程执行、SSH、远程服务器操作,使用 /remote-exec 命令,想在远程机器上运行命令,或操作远程服务器上的文件时,可激活该技能。
【主要能力】
- 管理多个远程主机的 SSH 连接
- 通过 SSH ControlMaster 在远程服务器上执行命令
- 在远程系统上读写文件
- 在不同远程环境(dev、staging、prod 等)之间切换
【核心命令】 技能提供包装脚本 remote-exec.sh,包含以下命令:
- add <name> <ssh-address> [port] — 手动添加新的 SSH 主机(可选)
- remove <name> — 移除主机配置
- connect <name> — 建立持久 SSH 连接
- disconnect [name] — 关闭 SSH 连接
- switch <name> — 切换到其他主机
- list — 显示所有已配置主机及连接状态
- status — 显示当前活动连接
- exec <command...> — 在当前活动的远程主机上执行命令
【使用方式】 初始设置: 技能首次激活时,检查用户是否已配置主机: .claude/skills/remote-exec/remote-exec.sh list 脚本会自动从 ~/.ssh/config 导入别名。如有需要,用户仍可手动添加: .claude/skills/remote-exec/remote-exec.sh add <name> user@hostname [port] 连接主机: .claude/skills/remote-exec/remote-exec.sh connect <name> 执行命令: 连接后,所有远程命令需用 exec 子命令包裹: .claude/skills/remote-exec/remote-exec.sh exec <command> 示例: .claude/skills/remote-exec/remote-exec.sh exec pwd .claude/skills/remote-exec/remote-exec.sh exec ls -la .claude/skills/remote-exec/remote-exec.sh exec bash /path/to/script.sh .claude/skills/remote-exec/remote-exec.sh exec "ps aux | grep nginx"
文件操作: 读取文件: .claude/skills/remote-exec/remote-exec.sh exec cat /path/to/file 写入小文件: .claude/skills/remote-exec/remote-exec.sh exec "echo 'content' > /path/to/file" 使用 heredoc 写入较大文件: .claude/skills/remote-exec/remote-exec.sh exec "cat > /path/to/file << 'EOF' file content here multiple lines EOF" 编辑文件(通过 exec 使用 sed 等工具): .claude/skills/remote-exec/remote-exec.sh exec "sed -i 's/old/new/g' /path/to/file"
切换主机: .claude/skills/remote-exec/remote-exec.sh switch prod .claude/skills/remote-exec/remote-exec.sh exec whoami
【行为准则】
- 执行命令前始终检查连接状态
- 在回复中明确区分本地操作与远程操作
- 远程文件操作尽量使用绝对路径
- 优雅处理错误——连接失败时引导用户重新连接
- 告知用户命令正在哪台主机上执行
- 正确引用复杂命令,避免 shell 解释问题
【示例工作流】 用户询问:“检查我 dev 服务器上的 nginx 日志”
- 检查状态:.claude/skills/remote-exec/remote-exec.sh status
- 若未连接则连接:.claude/skills/remote-exec/remote-exec.sh connect dev
- 执行命令:.claude/skills/remote-exec/remote-exec.sh exec "tail -n 50 /var/log/nginx/error.log"
【安全说明】
- SSH 密钥应配置为免密码认证
- 脚本使用 SSH ControlMaster 复用连接
- socket 文件以受限权限(600)创建
- 配置文件中不存储密码
- 执行破坏性命令前始终确认目标主机
【限制】
- 本地需安装 jq 以进行配置管理
- 需要基于 SSH 密钥的认证(不支持密码提示)
- 交互式命令(如 vim、top)无法通过 exec 工作
- 大文件传输应直接使用 scp 或 rsync
【allowed-tools】 Bash(*) — 执行 SSH 命令和管理连接所必需