English | 简体中文
一个通过SSH连接提供AI模型服务的智能助手程序,让你可以在任何支持SSH的环境中使用AI助手。
支持三种调用模式:
- 交互模式 - 通过SSH连接后,直接在终端中输入命令即可调用AI助手(
ssh [email protected]
) - 命令行模式 - 通过SSH连接后,直接在终端中执行命令即可调用AI助手(
ssh [email protected] 查看进程占用
) - 管道模式 - 通过SSH连接后,通过管道将内容输入到AI助手即可调用AI助手(
cat doc.txt | ssh [email protected]
)
此项目采用CodeBuddy
进行开发,完全不写一行代码。
关于开发的经验心得,请参考:不写一行代码!我用 AI 打造了一款 AI 客户端!(开源)
SSHLLM
,基于当前开源版深度定制的多用户多配置版,支持用户注册、配置助手,并分享公开或者私有使用。随时随地通过SSH即可调用AI助手完成如自动生成bash脚本、代码、识别图片验证码等功能。
打开你的终端,输入如下命令即可立即体验在线AI服务!
ssh test.sshai.top -p 9527
- 🔐 SSH安全连接 - 通过SSH协议提供加密的AI服务访问
- 🔑 灵活认证 - 支持密码认证、SSH公钥免密登录和无密码模式
- 🗝️ SSH Keys支持 - 支持多个SSH公钥免密登录,兼容RSA、Ed25519等密钥类型
- 🤖 多模型支持 - 支持DeepSeek、Hunyuan等多种AI模型
- 💭 实时思考显示 - 支持DeepSeek R1等模型的思考过程实时展示
- 🛠️ MCP工具支持 - 支持Model Context Protocol,可集成各种外部工具和服务
- 🎨 美观界面 - 彩色输出、动画效果和ASCII艺术
- ⚙️ 灵活配置 - 支持动态指定配置文件(-c参数)和完整的YAML配置
- 🌐 多语言支持 - 支持中文和英文界面
- 📝 自定义提示词 - 可配置的AI提示词系统
- 🚀 启动欢迎页 - 程序启动时显示美观的欢迎banner
- 🏗️ 模块化设计 - 清晰的代码架构,易于扩展
# 克隆项目
git clone https://github.com/sshllm/sshai.git
cd sshai
# 编译程序
make build
# 或者
go build -o sshai cmd/main.go
编辑 config.yaml
文件,设置你的API密钥:
# API配置
api:
base_url: "https://api.deepseek.com/v1"
api_key: "your-api-key-here"
default_model: "deepseek-v3"
# 服务器配置
server:
port: 2213
welcome_message: "欢迎使用SSHAI!"
# 认证配置(可选)
auth:
password: "" # 留空=无密码认证
login_prompt: "请输入访问密码: "
# SSH公钥免密登录配置(仅在设置password时生效)
authorized_keys:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... user@hostname"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user2@hostname"
authorized_keys_file: "~/.ssh/authorized_keys" # 可选:从文件读取公钥
# 自定义提示词配置
prompt:
system_prompt: "你是一个专业的AI助手,请用中文回答问题。"
stdin_prompt: "请分析以下内容并提供相关的帮助或建议:"
exec_prompt: "请回答以下问题或执行以下任务:"
# MCP工具配置
mcp:
enabled: true # 启用MCP功能
refresh_interval: 300 # 工具列表刷新间隔(秒)
servers:
# 使用uvx的稳定服务(推荐)
- name: "time"
transport: "stdio"
command: ["uvx", "mcp-server-time"]
enabled: true
- name: "fetch"
transport: "stdio"
command: ["uvx", "mcp-server-fetch"]
enabled: true
# 使用npx的服务(可能需要更长启动时间)
- name: "bing"
transport: "stdio"
command: ["npx", "bing-cn-mcp"]
enabled: true
# 直接运行(使用默认配置文件 config.yaml)
./sshai
# 指定配置文件运行
./sshai -c config.yaml
./sshai -c /path/to/your/config.yaml
# 后台运行
./sshai > server.log 2>&1 &
# 使用脚本运行
./scripts/run.sh
-c <config_file>
- 指定配置文件路径- 如果不指定,默认使用当前目录下的
config.yaml
- 如果配置文件不存在,程序会显示错误提示并退出
- 如果不指定,默认使用当前目录下的
# 使用示例
./sshai -c config.yaml # 使用当前目录的配置文件
./sshai -c /etc/sshai/config.yaml # 使用绝对路径的配置文件
./sshai # 默认使用 config.yaml
# 交互模式
ssh user@localhost -p 2213
# 直接执行命令
ssh user@localhost -p 2213 "你好,请介绍一下你自己"
# 管道输入分析
cat file.txt | ssh user@localhost -p 2213
echo "分析这段代码" | ssh user@localhost -p 2213
sshai/
├── README.md # 中文说明文档
├── README_EN.md # 英文说明文档
├── LICENSE # 开源协议
├── config.yaml # 主配置文件
├── config-en.yaml # 英文配置文件
├── go.mod # Go模块依赖
├── Makefile # 构建脚本
├── cmd/ # 程序入口
│ └── main.go # 主程序文件
├── pkg/ # 核心模块
│ ├── config/ # 配置管理
│ ├── models/ # 数据模型
│ ├── ai/ # AI助手功能
│ ├── ssh/ # SSH服务器
│ └── utils/ # 工具函数
├── docs/ # 项目文档
├── scripts/ # 测试和运行脚本
└── keys/ # SSH密钥文件
支持多个API端点配置:
api:
base_url: "https://api.deepseek.com/v1"
api_key: "your-deepseek-key"
default_model: "deepseek-v3"
timeout: 600
# 可配置多个API
api_endpoints:
- name: "deepseek"
base_url: "https://api.deepseek.com/v1"
api_key: "your-key"
default_model: "deepseek-v3"
- name: "local"
base_url: "http://localhost:11434/v1"
api_key: "ollama"
default_model: "gemma2:27b"
auth:
password: "your-secure-password" # 设置访问密码
login_prompt: "请输入访问密码: "
auth:
password: "your-secure-password" # 必须设置密码才能启用SSH公钥认证
login_prompt: "请输入访问密码: "
# 方式一:直接配置公钥列表
authorized_keys:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... user@hostname"
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user2@hostname"
# 方式二:从文件读取公钥
authorized_keys_file: "~/.ssh/authorized_keys"
SSH公钥使用方法:
# 生成SSH密钥对
ssh-keygen -t ed25519 -f ~/.ssh/sshai_key
# 使用私钥连接(免密登录)
ssh -i ~/.ssh/sshai_key -p 2213 user@localhost
# 查看公钥内容(用于配置)
cat ~/.ssh/sshai_key.pub
注意:
- SSH公钥认证仅在设置密码时启用,提供额外的安全保障
- 支持多个公钥同时配置,兼容RSA、Ed25519、ECDSA等密钥类型
- 登录成功后会自动显示程序内置的欢迎信息,无需在配置文件中设置
prompt:
system_prompt: "你是一个专业的AI助手..."
stdin_prompt: "请分析以下内容:"
exec_prompt: "请回答以下问题:"
SSHAI支持Model Context Protocol (MCP),可以集成各种外部工具和服务:
mcp:
enabled: true
refresh_interval: 300 # 工具列表刷新间隔(秒)
servers:
# 推荐使用uvx(更稳定、启动更快)
- name: "time"
transport: "stdio"
command: ["uvx", "mcp-server-time"]
enabled: true
- name: "fetch"
transport: "stdio"
command: ["uvx", "mcp-server-fetch"]
enabled: true
- name: "filesystem"
transport: "stdio"
command: ["uvx", "mcp-server-filesystem", "/tmp"]
enabled: true
# npx服务(可能需要更长启动时间)
- name: "bing"
transport: "stdio"
command: ["npx", "bing-cn-mcp"]
enabled: true
MCP工具特性:
- 🔧 自动工具发现 - 自动检测和加载MCP服务器提供的工具
- 🔄 智能重试机制 - 针对npx等包管理器的连接优化
- ⏱️ 超时保护 - 避免工具调用卡住,支持连接超时和重试
- 🎯 选择性输出 - 在管道模式和命令模式下隐藏工具调用过程,只显示结果
- 📊 实时状态监控 - 显示工具连接状态和执行进度
支持的包管理器:
uvx
- Python包管理器(推荐,更稳定)npx
- Node.js包管理器(支持但可能较慢)- 直接命令 - 预安装的MCP服务器
如果遇到npx服务器连接问题,请参考 MCP NPX故障排除指南。
项目包含完整的测试脚本:
# 基础功能测试
./scripts/test.sh
# SSH执行功能测试
./scripts/test_ssh_exec_final.sh
# 标准输入功能测试
./scripts/test_stdin_feature.sh
# 认证功能测试
./scripts/test_auth.sh
# DeepSeek R1思考模式测试
./scripts/test_deepseek_r1.sh
# SSH Keys免密登录功能测试
./scripts/test_ssh_keys.sh
- 配置指南 - 详细的配置说明
- 使用指南 - 功能介绍和使用方法
- 架构说明 - 模块化架构设计
- 认证配置 - SSH认证配置示例
- SSH Keys指南 - SSH公钥免密登录配置指南
- MCP使用指南 - Model Context Protocol工具集成指南
- MCP NPX故障排除 - NPX MCP服务器连接问题解决方案
欢迎提交Issue和Pull Request!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开Pull Request
本项目采用 Apache License 2.0 开源许可证。详情请查看 LICENSE 文件。
感谢所有为这个项目做出贡献的开发者和用户!
注意: 本项目遵循 Apache 2.0 开源协议,欢迎个人和商业使用。