README
🚀 SSH MCP 服务器
SSH MCP 服务器是一个实现了 Model Context Protocol (MCP) 协议的 SSH 服务器,它能提供安全的远程访问和执行功能,通过 MCP 协议支持远程 SSH 连接,为用户带来便捷、安全的远程操作体验。
🚀 快速开始
SSH MCP 服务器通过 MCP 协议实现远程 SSH 连接,为用户提供安全的远程访问和执行功能。下面为你介绍使用它的基本步骤。
✨ 主要特性
- 基于 MCP 协议的 SSH 服务器实现,保障远程连接的高效与安全。
- 集成 SQLite 数据库进行数据持久化存储,确保数据的稳定保存。
- 使用 TypeScript 实现以确保类型安全和更佳的开发体验,提升开发效率。
📦 安装指南
先决条件
- Node.js(建议使用 v16 或更高版本)
- npm 或 yarn 包管理器
- TypeScript 开发知识
安装步骤
- 克隆仓库:
git clone <repository-url>
cd ssh-server
- 安装依赖项:
npm install
- 构建项目:
npm run build
💻 使用示例
配置
服务器使用 SQLite 数据库 (ssh.db) 存储 SSH 凭据。数据库文件将在服务器启动时自动创建。
工具
服务器提供以下工具:
ssh_exec
通过 SSH 执行命令。 输入参数:
host:要连接的主机。(必填)command:要执行的命令。(必填)username:用于 SSH 连接的用户名。(必填)privateKeyPath:私钥文件路径。(必填)
示例用法:
{
"tool_name": "ssh_exec",
"arguments": {
"host": "example.com",
"command": "ls -l",
"username": "user",
"privateKeyPath": "/path/to/private/key"
}
}
⚠️ 重要提示
privateKeyPath必须是一个有效的私钥文件路径。
add_credential
添加一个新的 SSH 凭据。 输入参数:
name:凭据的名称。(必填)host:要连接到的主机。(必填)username:用于 SSH 连接的用户名。(必填)privateKeyPath:私钥文件路径。(必填)
示例用法:
{
"tool_name": "add_credential",
"arguments": {
"name": "my_credential",
"host": "example.com",
"username": "user",
"privateKeyPath": "/path/to/private/key"
}
}
⚠️ 重要提示
privateKeyPath必须是一个有效的私钥文件路径。
list_credentials
列出所有存储的 SSH 凭据。 输入参数:
- 无
示例用法:
{
"tool_name": "list_credentials",
"arguments": {}
}
remove_credential
删除一个存储的 SSH 凭据。 输入参数:
name:要删除的凭据名称。(必填)
示例用法:
{
"tool_name": "remove_credential",
"arguments": {
"name": "my_credential"
}
}
启动服务器
npm start
服务器将在配置的端口上启动(默认设置可以在源代码中修改)。
📚 详细文档
项目结构
src/- 源代码目录build/- 编译后的 JavaScript 输出node_modules/- 项目依赖项
依赖
ssh:用于 SSH 连接的库。child_process:用于执行子进程(如 SSH 命令)。fs:用于文件系统操作(读取和写入凭据)。
开发
要进行代码修改,请按照以下步骤操作:
- 修改源代码文件(在
src/目录中)。 - 使用 npm 脚本构建项目:
npm run build
- 测试更改后的功能。
要贡献到项目,请 fork 仓库并在您的分支上进行开发。完成后提交一个 Pull Request。
贡献指南
要为该项目做贡献,请按照以下步骤操作:
- Fork 仓库。
- 在您的本地副本中创建一个新的功能分支:
git checkout -b feature/your-feature-name
- 提交您的更改。
- 推送到远程仓库并提交 Pull Request。
我们欢迎所有有用的贡献!
🔧 技术细节
本项目使用 TypeScript 进行开发,基于 MCP 协议实现 SSH 服务器。通过集成 SQLite 数据库,实现了数据的持久化存储。在运行过程中,使用 ssh 库进行 SSH 连接,child_process 执行子进程(如 SSH 命令),fs 进行文件系统操作(读取和写入凭据)。这些技术的结合,使得项目具备了安全、高效的远程访问和执行功能。
📄 许可证
[许可证信息]
微信扫一扫