SSH命令服务器

一个MCP服务器,使AI助手能够在远程服务器上执行SSH命令,解决终端SSH连接需要手动输入密码的问题。

  • by Hoopou
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Hoopou/SSH_MCP

使用说明

SSH MCP服务器

MCP(模型上下文协议)服务器,使AI助手能够在远程服务器上执行SSH命令。这解决了终端SSH连接需要手动输入密码的问题。

特性

  • 执行SSH命令:在远程服务器上运行一次性命令,而不维护持久连接
  • 会话管理:创建、列出和管理持久SSH会话
  • 交互式 shell:发送命令并从交互式shell会话中检索输出
  • 连接测试:在创建会话之前测试SSH连接

可用的MCP工具

工具 说明
test_ssh_connection 在不创建持久会话的情况下测试与服务器的SSH连接
execute_ssh_command 在远程服务器上执行单个SSH命令(一次性)
start_ssh_session 启动新的持久SSH会话
list_ssh_sessions 列出所有活动的SSH会话
end_ssh_session 按ID结束/关闭SSH会话
end_all_ssh_sessions 结束所有活动的SSH会话
session_execute_command 在现有SSH会话中执行命令
session_send_input 向SSH会话的交互式shell发送输入
get_session_output 从SSH会话的交互式shell获取输出缓冲区
clear_session_output 清除SSH会话的输出缓冲区
get_session_info 获取特定SSH会话的详细信息

运行服务器

先决条件

  • .NET 9.0 SDK

运行服务器

cd SshMcpServer
dotnet run --project SshMcpServer.csproj

服务器将于启动 http://localhost:5100 默认情况下。

端点

  • POST /mcp -MCP协议端点(服务器发送事件)
  • GET /health -健康检查端点
  • GET /sessions -列出活动会话(调试)

配置

适用于克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "ssh-mcp-server": {
      "url": "http://localhost:5100/mcp",
      "transport": "sse"
    }
  }
}

VS代码/继续

添加到MCP配置中:

{
  "mcpServers": {
    "ssh-mcp-server": {
      "url": "http://localhost:5100/mcp",
      "transport": "sse"
    }
  }
}

示例用法

测试连接

Test SSH connection to host: myserver.com, port: 22, user: admin, password: mypassword

一次性命令

Execute the command "df -h" on myserver.com as user admin with password mypassword

基于会话的工作

  1. 启动会话:

    Start SSH session to myserver.com as root with password admin123
    
  2. 执行命令:

    In session abc123, execute "cd /var/log && ls -la"
    
  3. 结束会话:

    End SSH session abc123
    

安全考虑

⚠️ 警告:此服务器处理SSH凭据。确保:

  1. 仅在受信任的网络上运行
  2. 不要将服务器暴露在公共互联网上
  3. 尽可能使用强密码或基于密钥的身份验证
  4. 服务器仅在活动会话期间将密码存储在内存中

发展

构建

dotnet build

运行测试

cd SshTest
dotnet run

许可证

麻省理工学院