SSH Linux 远程助手
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_4c293371/ssh-linux-remote
技能介绍
解决什么问题
当你需要在大量 Linux 服务器上跑命令、查状态、传文件时,常见的做法是把 IP、账号、密码散落在脚本里,或者用 SSH 手动一条条敲。前者容易泄露凭据,后者难以批量化。SSH Linux 远程操作技能把 paramiko SSH 通道 封装成可配置的远程操作层,让本机可以通过 22/TCP 驱动任意内网 Linux 主机,而服务器信息不写死在代码里。
它适合这些场景:
- 从开发机远程执行 shell 命令并回收输出;
- 需要
sudo -S提权但不想把密码暴露在远端进程列表; - 通过 SFTP 传文件,并要求两端 MD5 一致;
- 临时切换目标服务器,又不想反复改配置文件。
技能如何工作
核心依赖是 paramiko。首次使用前会检查 scripts/config.json:不存在就按 scripts/config.example.json 的格式写入服务器 IP、SSH 用户名、密码;如果是另一台临时服务器,则用环境变量覆盖,不改文件。
支持的关键步骤如下:
- 连通性自检:登录后输出主机名、用户、发行版、时间,打印
[OK] SSH 通道可用表示成功。失败时按超时、Permission denied等提示排查。 - 执行远程命令:调用
scripts/run_remote.py。规则是永远把命令写进.sh文件再传路径,避免 bash 行内联复杂命令时被 git-bash 吞掉$、{{}}。 - sudo 提权:
--sudo通过sudo -S从 stdin 喂密码,sudo 密码默认取登录密码,也可在配置里单独设置。 - 文件传输:SFTP 单文件传输,自动创建远端/本地父目录,两端 MD5 比对一致才报
[ok]。
环境变量覆盖项包括 SSH_HOST、SSH_PORT、SSH_USER、SSH_PASSWORD、SSH_SUDO_PASSWORD、SSH_KEY_FILE 等。公钥认证可选,填入 key_file 后优先于密码。
适用边界与注意点
目标机需要 SSH 服务在跑,防火墙放行 22/TCP。首次连接采用 TOFU 自动接受主机指纹;高安全环境应预先核对指纹,再改用严格模式。
config.json 会保存明文密码,分享或发布技能时必须剔除,只留 config.example.json。远端执行 rm、重启服务等破坏性操作前要先确认影响面;共享 VM 上可能有别人的服务,重启整机或容器引擎类命令尤其要谨慎,优先精确操作单个服务。
长任务需要脱离会话时,命令里加 nohup ... >log 2>&1 & 或 setsid。git-bash 调用时,以 / 开头的远端路径可能被 MSYS 改写成 Windows 路径,需加 MSYS_NO_PATHCONV=1,或写成 //tmp/...。更多机制细节、坑速查和故障排查表见 reference.md。
使用场景
- 运维人员需要登录多台内网Linux服务器执行诊断命令,逐台检查磁盘与进程状态并回收结果
- 后端开发要把本地构建产物传到远程测试机指定目录,并确认两端MD5一致避免文件损坏
- 需要用sudo权限在远端更新系统包或重启单个服务,同时避免密码出现在远端进程列表里
- 临时切换到另一台测试服务器跑脚本,不想反复修改配置文件,改用环境变量临时覆盖连接信息
适合人员
- 运维工程师:日常维护多台内网Linux主机,需要远程执行命令、排查故障和传输配置文件
- 后端开发:负责把应用部署到远程测试或生产环境,需要跑部署脚本并同步构建产物
- SRE工程师:管理一批Linux实例,关注操作可审计性和凭据安全,希望避免密码硬编码
- 独立开发者:持有几台云主机,想用脚本替代手工SSH登录完成部署和例行巡检