使用说明
SSH MCP 服务器
一个模型上下文协议(MCP)服务器,通过Claude Desktop提供对Unix/Linux服务器的SSH访问。使用自然语言执行命令、管理文件并监控您的远程服务器!
特点/特性
- 🔌(电源插头/插座) 直接SSH访问 - 从Claude桌面执行远程服务器上的命令
- 📁 文件夹 文件管理 - 上传、下载和浏览文件
- 📊(表格/数据图表) 系统监控 - 获取实时系统信息(CPU、内存、磁盘、温度)
- 🔄 翻译为中文是:循环/重复 流程管理 - 检查正在运行的进程
- 📝 多命令脚本 - 按顺序执行多个命令
- 🔐(锁形符号,常用于表示安全、保密或需要密码的含义) 安全的 - 使用SSH密钥认证
先决条件
- Python 3.8或更高版本
- Claude Desktop(可译为“Claude桌面版”)
- 启用了SSH的远程Unix/Linux服务器
- 用于认证的SSH密钥对
安装
1. 克隆仓库
git clone https://github.com/paraporoco/SSH-MCP.git
cd SSH-MCP
2. 配置您的连接
复制示例配置文件:
# Windows PowerShell
Copy-Item config.example.json config.json
# Linux/Mac
cp config.example.json config.json
编辑 config.json 附上您的服务器详细信息:
{
"ssh": {
"host": "YOUR_SERVER_IP",
"port": 22,
"user": "YOUR_SSH_USERNAME",
"key_path": "PATH_TO_YOUR_SSH_KEY"
},
"connection": {
"timeout": 30,
"default_command_timeout": 30
}
}
示例:
{
"ssh": {
"host": "192.168.1.100",
"port": 22,
"user": "username",
"key_path": "C:\\Users\\YourName\\.ssh\\id_rsa"
},
"connection": {
"timeout": 30,
"default_command_timeout": 30
}
}
3. 运行安装脚本
Windows(PowerShell)
.\setup.ps1
Linux/苹果系统
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
4. 配置Claude桌面版
将MCP服务器添加到您的Claude Desktop配置中:
配置文件位置:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
添加此配置:
{
"mcpServers": {
"ssh-server": {
"command": "/FULL/PATH/TO/SSH-MCP/venv/Scripts/python.exe",
"args": [
"/FULL/PATH/TO/SSH-MCP/ssh_mcp_server.py"
]
}
}
}
Windows 示例:
{
"mcpServers": {
"ssh-server": {
"command": "C:\\Users\\YourName\\Projects\\SSH-MCP\\venv\\Scripts\\python.exe",
"args": [
"C:\\Users\\YourName\\Projects\\SSH-MCP\\ssh_mcp_server.py"
]
}
}
}
macOS/Linux 示例:
{
"mcpServers": {
"ssh-server": {
"command": "/home/username/SSH-MCP/venv/bin/python",
"args": [
"/home/username/SSH-MCP/ssh_mcp_server.py"
]
}
}
}
5. 重启Claude桌面应用
完全退出并重新启动 Claude Desktop 以加载 MCP 服务器。
SSH密钥设置
如果你没有SSH密钥对,请创建一个:
在 Windows(PowerShell)上:
ssh-keygen -t rsa -b 4096 -f $env:USERPROFILE\.ssh\id_rsa
在Linux/Mac上:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
然后将你的公钥复制到远程服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server-ip
或者手动将公钥附加到 ~/.ssh/authorized_keys 在你的远程服务器上。
可用工具
配置完成后,您可以通过自然语言在Claude桌面版中使用这些工具:
1. ssh测试连接
测试与远程服务器的SSH连接。
示例: “测试我的服务器连接”
2. ssh_execute 翻译为中文是“通过SSH执行(命令/操作)”
在您的远程服务器上执行单个命令。
示例:
- “在我的服务器上运行‘ls -la’命令”
- “检查我服务器上的磁盘空间”
- “显示内核版本”
3. ssh执行脚本
按顺序执行多个命令。
示例: 在我的服务器上运行以下命令:cd /home/user,ls -la,pwd
4. ssh系统信息
获取全面的系统信息(操作系统、CPU、内存、磁盘、温度)。
示例: “显示我的服务器系统信息”
5. ssh_list_files 翻译成中文是“通过SSH列出文件”
列出目录中的文件。
示例:
- “列出/home/user目录中的文件”
- “给我看看/var/log里有什么”
6. ssh_read_file 翻译为中文是“通过SSH读取文件”
读取文件的内容。
示例: “从我的服务器读取/etc/hostname文件”
7. ssh检查进程
检查某个进程是否正在运行。
示例: “我的服务器上运行着 Nginx 吗?”
8. 通过SSH上传文件
将文件从您的电脑上传到远程服务器。
示例: “将C:\myfile.txt上传到/home/user/myfile.txt”
9. 通过SSH下载文件
从远程服务器下载文件到您的电脑。
示例: “将/var/log/syslog下载到C:\logs\syslog.txt”
使用示例
以下是在Claude Desktop中可以使用的自然语言提示:
系统监控:
- “服务器CPU的温度是多少?”
- “正在使用多少内存(RAM)?”
- “显示磁盘使用情况”
- “系统正常运行时间是多少?”
文件操作:
- “列出 /home/user/projects 目录下的所有 Python 文件”
- “读取位于 /etc/nginx/nginx.conf 的配置文件”
- “将这个脚本上传到我的服务器”
流程管理:
- “Docker正在运行吗?”
- “显示所有Python进程”
- “检查Apache是否正在运行”
命令执行:
- "使用 apt update 更新软件包列表"
- “重启nginx服务”
- “创建一个名为 /home/user/backup 的目录”
配置选项
环境变量(config.json 的替代方案)
而不是使用 config.json,你可以设置环境变量:
SSH_HOST- 远程服务器IP地址SSH_USER- SSH 用户名SSH_KEY_PATH- SSH私钥的路径SSH_PORT- SSH端口(默认:22)SSH_TIMEOUT- 连接超时时间(以秒为单位)(默认:30)SSH_COMMAND_TIMEOUT- 命令执行超时(默认:30)
故障排除
连接问题
-
验证服务器是否可达:
ping YOUR_SERVER_IP -
手动测试SSH:
ssh -i /path/to/key username@server-ip -
检查服务器上的SSH服务:
sudo systemctl status ssh -
验证SSH密钥权限:
- 私钥应仅对您可读(chmod 600)
- 公钥应为
~/.ssh/authorized_keys在服务器上
MCP服务器未加载
-
验证Python安装:
python --version # Should be 3.8+ -
检查虚拟环境:
# Activate venv and test venv/Scripts/python.exe ssh_mcp_server.py # Windows venv/bin/python ssh_mcp_server.py # Linux/Mac -
检查Claude Desktop日志:
- 在Claude Desktop控制台中查找错误信息
- 验证路径中的
claude_desktop_config.json是绝对的
-
完全重启Claude桌面版:
- 关闭所有实例
- 检查系统托盘中的隐藏实例
- 重启并等待10-15秒以让MCP服务器初始化
权限被拒绝错误
- 确保你的SSH密钥具有正确的权限
- 验证用户在远程服务器上拥有必要的权限
- 检查SSH密钥是否未设置密码保护(或使用ssh-agent)
安全考虑事项
- ⚠️(警告/注意) 永远不要承诺
config.json或使用SSH密钥进行版本控制 - 使用SSH密钥认证代替密码
- 限制SSH密钥的权限(chmod 600)
- 考虑使用具有有限权限的专用SSH用户
- 确保您的SSH密钥安全,并定期更换
- 使用防火墙规则限制SSH访问
发展
运行测试
# Activate virtual environment
# Windows
.\venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# Run test connection
python test_connection.py
项目结构
SSH-MCP/
├── ssh_mcp_server.py # Main MCP server
├── config.example.json # Configuration template
├── config.json # Your config (gitignored)
├── requirements.txt # Python dependencies
├── setup.ps1 # Windows setup script
├── test_connection.ps1 # Windows test script
├── .gitignore # Git ignore rules
└── README.md # This file
贡献;做出贡献
欢迎贡献!请随时提交拉取请求。
- 为仓库创建分支(或“克隆仓库”)
- 创建你的特性分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
许可证
MIT 许可证 - 请参阅 许可证 文件详情见附件
致谢
- 使用……构建 FastMCP
- 用途 Paramiko(注:这是一个专有名词,通常作为软件库或工具的名称,直接音译为中文可能无实际意义,但在此按照要求给出音译形式) 用于SSH连接
- 专为……设计 Claude Desktop(可译为“Claude桌面版”或保持原样,根据上下文判断是否需要具体化为“Claude桌面应用程序”等)
支持
对于问题、疑问或贡献:
- 在GitHub上提交一个问题
- 检查现有问题以寻找解决方案
- 参考 MCP文档
注: 这个项目并非正式隶属于Anthropic或Claude Desktop。