MCP工具--SSH Server

https://github.com/bvisible/mcp-ssh-manager

最近做一个python2到python3的升级,依赖goldendb环境运行。需要不断在机器上根据机器的反馈,调整代码。

开发工作流

需要定制一个开发工作流:

  1. 登录mcp_server连接omm179 ,远程项目目录为project_path="/home/wzx/insighttool/"
  2. 执行cmdA="cd /home/wzx/insighttool/onekeypatrol_and_diag_61212_and_later && find . -type f -print0 | xargs -0 dos2unix -q -k -s -o && python check_required_packages.py"
  3. 查看报错,给出python2 和 python3.9.6 版本语法兼容的修复方案。更新方案文档 @D:/SRC/python/InsightTool/InsightTool/doc/py3Adapt.md && 修复项目代码
  4. 通过scp 上传修改的代码文件到服务器上对应的目录scp [filePath] root@10.228.142.179:/home/wzx/insighttool/,继续验证cmdA
  5. 不断loop 2-4, 直到cmdA运行成功为止。

用例工作流

/superpowers:brainstorming 讨论方案:

  1. 根据 2.1章节 @D:/SRC/python/InsightTool/InsightTool/onekeypatrol_and_diag_61212_and_later/巡检工具使用手册.md#L62 设计测试用例,输出到@D:/SRC/python/InsightTool/InsightTool/onekeypatrol_and_diag_61212_and_later/dev_log/testCase
  2. 需要定制一个测试用例工作流:
    1). 登录mcp_server连接omm179 ,远程项目目录为project_path="/home/wzx/insighttool/",上传本地文件diag_report_html,onekeypatrol_and_diag_61212_and_later,tools
    2). 执行测试用例cmdA="cd /home/wzx/insighttool/onekeypatrol_and_diag_61212_and_later && find . -type f -print0 | xargs -0 dos2unix -q -k -s -o && {testCaseCmd}"
    3). 记录结果并分析原因输出到当日日期的文件里
    4). 继续执行下一个测试用例
    5). 不断loop 2-4, 直到测试用例都运行结束为止。

针对上述用例自动化的方案,设计方案到@D:/SRC/python/InsightTool/InsightTool/doc/testCase.md 。暂不写代码。

windows环境配置

1)npm install -g mcp-ssh-manager #确保你的系统已安装 Node.js 18+ 和 Python 环境

2)生成ssh key

a.在 Windows 终端(PowerShell 或 CMD)中执行:
bash
ssh-keygen -t rsa -b 4096
按提示操作,一般直接回车使用默认路径即可。

b.将公钥复制到远程服务器:
使用 PowerShell 的 type 和 ssh 命令组合来完成:
bash
ssh 用户名@服务器IP "mkdir -p ~/.ssh && echo ****** >> ~/.ssh/authorized_keys"
(请将 用户名@服务器IP 替换为你的实际信息)

3)ssh-manager server add #使用ssh key

C:\Users\0313000534>ssh-manager server add
⚠️ Missing optional dependencies: rsync jq sshpass
ℹ️  Some features may not work without them (rsync is needed for 'ssh-manager sync')

Add New SSH Server
============================================================
Server name (e.g., prod1, web_server) — letters, digits, underscore only: omm179_2
Host/IP address: 10.228.142.179
Username [root]:
Port [22]:

Authentication method:
  1) SSH Key
  2) Password
Choose [1-2]: 1
SSH key path [/c/Users/0313000534/.ssh/id_rsa]:
Description (optional):

ℹ️  Security mode (optional — press Enter to skip and keep current behavior)
ℹ️    unrestricted = no filter (default, identical to v3.4.x)
ℹ️    readonly     = block mutating tools + built-in destructive command denylist
ℹ️    restricted   = command must match SSH_SERVER_<N>_ALLOW_PATTERNS
Mode [unrestricted|readonly|restricted] [unrestricted]:
ℹ️  Audit log: absolute file path to append a JSONL audit record per tool call
AUDIT_LOG path (optional):

验证:
ssh-manager exec omm179 "ls /home"

4) 找到安装路径

C:\Users\0313000534>where mcp-ssh-manager
C:\Users\0313000534\AppData\Roaming\npm\mcp-ssh-manager

5)执行claude安装

claude mcp add ssh-manager node C:/Users/0313000534/AppData/Roaming/npm/node_modules/mcp-ssh-manager/src/index.js

6) 验证

C:\Users\0313000534>claude
/reload-plugins

List all my SSH servers, based on MCP server
image

7) pycharm/idea/cc-switch 运行

在项目根目录下添加 .mcp.json文件
image

{
  "mcpServers": {
    "ssh-manager": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/Users/0313000534/AppData/Roaming/npm/node_modules/mcp-ssh-manager/src/index.js"
      ],
      "env": {},
      "autoApprove": [
        "mcp__ssh-manager__ssh_execute",
        "mcp__ssh-manager__ssh_list_servers",
        "mcp__ssh-manager__ssh_upload",
        "mcp__ssh-manager__ssh_download",
        "mcp__ssh-manager__ssh_sync",
        "mcp__ssh-manager__ssh_alias",
        "mcp__ssh-manager__ssh_deploy",
        "mcp__ssh-manager__ssh_execute_sudo",
        "mcp__ssh-manager__ssh_tunnel_create",
        "mcp__ssh-manager__ssh_tunnel_list",
        "mcp__ssh-manager__ssh_tunnel_close",
        "mcp__ssh-manager__ssh_session_start",
        "mcp__ssh-manager__ssh_session_send",
        "mcp__ssh-manager__ssh_session_list",
        "mcp__ssh-manager__ssh_session_close",
        "mcp__ssh-manager__ssh_execute_group",
        "mcp__ssh-manager__ssh_group_manage",
        "mcp__ssh-manager__ssh_tail",
        "mcp__ssh-manager__ssh_monitor",
        "mcp__ssh-manager__ssh_history",
        "mcp__ssh-manager__ssh_connection_status",
        "mcp__ssh-manager__ssh_key_manage",
        "mcp__ssh-manager__ssh_command_alias",
        "mcp__ssh-manager__ssh_hooks",
        "mcp__ssh-manager__ssh_profile"
      ]
    }
  }
}

issue:

  1. SSH Key 失败,退后为passwd校验
    ssh-manager server test omm221
    ⚠️ Missing optional dependencies: rsync jq sshpass
    ℹ️ Some features may not work without them (rsync is needed for 'ssh-manager sync')
    ℹ️ Testing connection to omm221 (root@10.228.142.221:22)...
    root@10.228.142.221's password:

Done: ~/.ssh权限不对

目录权限:~/.ssh 必须为 700 (drwx------)。
文件权限:authorized_keys 必须为 600 (-rw-------)。

附录:

EXAMPLES:
    # Add a new server
    ssh-manager server add

    # List all servers
    ssh-manager server list

    # Test connection to prod1
    ssh-manager server test prod1

    # Sync files to server
    ssh-manager sync push prod1 ./app /var/www/app

    # Create SSH tunnel
    ssh-manager tunnel create prod1 local 3307:localhost:3306

    # Monitor server
    ssh-manager monitor prod1 cpu

ssh-manager --help

SSH Manager CLI - Simple and powerful SSH server management

USAGE:
    ssh-manager              # Interactive mode (menu)
    ssh-manager -i           # Interactive mode (menu)
    ssh-manager <command>    # Direct command mode

COMMANDS:
    server      Server management
        add         Add a new server
        list        List all servers
        test        Test server connection
        remove      Remove a server
        edit        Edit server configuration
        show        Show server details

    sync        File synchronization (rsync)
        push        Push files to server
        pull        Pull files from server

    tunnel      SSH tunnel management
        create      Create a new tunnel
        list        List active tunnels
        close       Close a tunnel

    monitor     System monitoring
        cpu         Monitor CPU usage
        memory      Monitor memory usage
        disk        Monitor disk usage
        network     Monitor network

    session     SSH session management
        start       Start interactive session
        list        List active sessions
        close       Close a session

    exec        Execute commands
        run         Run command on server
        group       Run on server group

    config      Configuration
        edit        Edit configuration
        show        Show configuration
        init        Initialize configuration

    tools       Tool activation/deactivation
        list        Show all tools and their status
        configure   Interactive configuration wizard
        enable      Enable a tool group
        disable     Disable a tool group
        reset       Reset to default (all tools enabled)
        export      Export Claude Code auto-approval config

OPTIONS:
    -h, --help      Show this help message
    -v, --version   Show version
    -q, --quiet     Quiet mode
    -d, --debug     Debug mode


CONFIGURATION:
    Config directory: /c/Users/0313000534/.ssh-manager
    Server config:    /c/Users/0313000534/.ssh-manager/.env

DOCUMENTATION:
    https://github.com/bvisible/mcp-ssh-manager

1
check
python check_required_packages.py
less log/onekey_diag.log |grep "[ERROR]"
2
install
python onekey_diag.py --action=install --obj_module=all
less log/onekey_diag.log |grep "[ERROR]"
3
start
python onekey_diag.py --action=start

less log/onekey_diag.log |grep "[ERROR]"

ps -aux|grep diag_monidamon_process
4
stop
python onekey_diag.py --action=stop

less log/onekey_diag.log |grep "[ERROR]"

ps -aux|grep diag_monidamon_process
5
diag
python onekey_diag.py --action=diag --time_before 30min

less log/onekey_diag.log |grep "[ERROR]"

报告正常输出
6
expand
python onekey_diag.py --action expand --obj_module all
less log/onekey_diag.log |grep "[ERROR]"
7
upgrade_config
python onekey_diag.py --action upgrade_config --obj_module all
less log/onekey_diag.log |grep "[ERROR]"
8
upgrade_script
python onekey_diag.py --action upgrade_script --obj_module all
less log/onekey_diag.log |grep "[ERROR]"
9
upgrade_script
python onekey_diag.py --action collect --model normal --time_before 30min
less log/onekey_diag.log |grep "[ERROR]"
10
exec工具
python onekey_diag.py --action exec --tool dn_sql_func --param='--func=NO_CONSTRAINT_TABLE' --obj_module dn --strategy db_slave
less log/onekey_diag.log |grep "[ERROR]"

日志输出成功
11
自定义巡检
python onekey_diag.py --action func_check --obj_cluster all
less log/onekey_diag.log |grep "[ERROR]"

csv有内容
12
慢日志收集
python onekey_diag.py --action collect_slow_log --obj_cluster all --time_before 1hour
less log/onekey_diag.log |grep "[ERROR]"

cgwin
https://blog.csdn.net/qq_53614788/article/details/134492367

posted @ 2026-08-12 14:54  静水深耕,云停风驻  阅读(6)  评论(0)    收藏  举报