Skip to content

Security Config Guide

licco edited this page Aug 2, 2026 · 1 revision

🔐 SSH LICCO 安全配置指南

📋 目录

  1. 安全级别介绍
  2. 快速配置
  3. 环境变量详解
  4. 使用场景示例
  5. 常见问题

🎯 安全级别介绍

三种安全级别

1. STRICT(严格模式) 🔴

  • 适用场景: 生产环境、公共服务器
  • 特点:
    • 最严格的命令验证
    • 禁止所有危险字符
    • 限制访问敏感路径
  • 安全评分: 最高

2. BALANCED(平衡模式) 🟢 (默认)

  • 适用场景: 开发环境、个人服务器
  • 特点:
    • 适度的命令验证
    • 只禁止关键危险字符
    • 合理的访问限制
  • 安全评分: 高

3. RELAXED(宽松模式) 🟡

  • 适用场景: 测试环境、完全信任的服务器
  • 特点:
    • 最小化的命令验证
    • 允许更多命令
    • 宽松的访问限制
  • 安全评分: 中等

⚡ 快速配置

方法 1:使用环境变量(推荐)

Windows PowerShell

# 设置安全级别
$env:SSH_SECURITY_LEVEL = "balanced"

# 添加额外允许的命令
$env:SSH_EXTRA_ALLOWED_COMMANDS = "git,pip,npm"

# 启动服务器
python -m ssh_mcp.server

Linux/Mac

# 设置安全级别
export SSH_SECURITY_LEVEL="balanced"

# 添加额外允许的命令
export SSH_EXTRA_ALLOWED_COMMANDS="git,pip,npm"

# 启动服务器
python -m ssh_mcp.server

方法 2:在 MCP 配置中设置

编辑 mcp.config.json:

{
  "mcpServers": {
    "ssh": {
      "command": "ssh-licco",
      "env": {
        "SSH_SECURITY_LEVEL": "balanced",
        "SSH_EXTRA_ALLOWED_COMMANDS": "git,pip,npm",
        "SSH_BASE_DIR": "/home"
      }
    }
  }
}

📝 环境变量详解

SSH_SECURITY_LEVEL

描述: 设置安全级别

可选值:

  • strict - 严格模式
  • balanced - 平衡模式(默认)
  • relaxed - 宽松模式

示例:

export SSH_SECURITY_LEVEL="strict"

SSH_EXTRA_ALLOWED_COMMANDS

描述: 额外允许的命令(逗号分隔)

示例:

# 允许 git, pip, npm
export SSH_EXTRA_ALLOWED_COMMANDS="git,pip,npm"

# 允许 apt-get, curl, wget
export SSH_EXTRA_ALLOWED_COMMANDS="apt-get,curl,wget"

注意:

  • 不要添加空格
  • 命令必须在服务器上存在
  • 仅在当前会话生效

SSH_BASE_DIR

描述: 允许访问的基础目录

默认值: /home

示例:

# 允许访问 /var/www
export SSH_BASE_DIR="/var/www"

# 允许访问 /tmp
export SSH_BASE_DIR="/tmp"

💡 使用场景示例

场景 1:Web 开发者

# 需要 git, npm, docker 等命令
export SSH_SECURITY_LEVEL="balanced"
export SSH_EXTRA_ALLOWED_COMMANDS="git,npm,docker,composer"
export SSH_BASE_DIR="/var/www"

python -m ssh_mcp.server

场景 2:Python 开发者

# 需要 pip, python, venv 等
export SSH_SECURITY_LEVEL="balanced"
export SSH_EXTRA_ALLOWED_COMMANDS="pip,pip3,python3,poetry"
export SSH_BASE_DIR="/home"

python -m ssh_mcp.server

场景 3:系统管理员(完全信任环境)

# 需要更多系统管理命令
export SSH_SECURITY_LEVEL="relaxed"
export SSH_EXTRA_ALLOWED_COMMANDS="sudo,apt,yum,systemctl,journalctl"

python -m ssh_mcp.server

场景 4:生产环境(最高安全)

# 严格模式,不添加额外命令
export SSH_SECURITY_LEVEL="strict"
export SSH_BASE_DIR="/home"

python -m ssh_mcp.server

🎯 各级别允许的命令

所有级别都允许(BASE)

ls, dir, cd, pwd, cat, head, tail, less, more
grep, find, which, whereis
uname, hostname, whoami, uptime, date, cal
top, htop, ps, free, df, du
ping, netstat, ss, dig, nslookup
cp, mv, rm, mkdir, rmdir, touch, chmod, chown
ln, tar, gzip, zip, unzip
echo, printf, sed, awk, cut, sort, uniq, wc
docker, docker-compose
systemctl, journalctl, service

RELAXED 级别额外允许(EXTENDED)

sudo, su
wget, curl
apt-get, apt, yum, dnf, pacman
pip, pip3, npm, yarn
git, svn
python3, python, node, java
vim, vi, nano, emacs
ssh, scp, rsync
kill, pkill, killall

自定义命令

通过 SSH_EXTRA_ALLOWED_COMMANDS 添加任意命令。


⚠️ 被阻止的危险操作

所有级别都阻止

# 访问敏感文件
cat /etc/shadow
cat /root/.ssh/id_rsa

# 路径遍历
../../../etc/passwd

STRICT 和 BALANCED 级别阻止

# 命令注入
ls -la; rm -rf /
echo "test" | sudo bash
$(whoami)
`id`

🔧 故障排查

问题 1:命令被阻止

错误信息:

❌ 安全错误:命令 'git' 不在允许列表中。
当前安全级别:balanced
如需使用该命令,请设置环境变量:SSH_EXTRA_ALLOWED_COMMANDS=git

解决方法:

export SSH_EXTRA_ALLOWED_COMMANDS="git"

问题 2:路径访问被阻止

错误信息:

❌ 安全错误:禁止访问敏感路径:/etc
这是为了保护系统关键文件。

解决方法:

  • 该路径被永久禁止,无法访问
  • 或切换到 RELAXED 模式

问题 3:安全级别设置无效

问题: 设置了环境变量但不生效

检查:

# 检查环境变量是否设置
echo $SSH_SECURITY_LEVEL

# 检查拼写是否正确
# 应该是:strict, balanced, relaxed 之一

📊 安全级别对比表

特性 STRICT BALANCED RELAXED
命令白名单 基础 基础 基础 + 扩展
危险字符检查 9 种 4 种
路径遍历保护
敏感路径保护
自定义命令
安全评分 最高 中等
适用场景 生产 开发 测试

🎓 最佳实践

1. 根据环境选择级别

  • 生产服务器: STRICT
  • 开发服务器: BALANCED
  • 个人测试: RELAXED

2. 最小权限原则

只添加确实需要的命令:

# ✅ 好:只添加需要的
SSH_EXTRA_ALLOWED_COMMANDS="git,npm"

# ❌ 不好:添加太多
SSH_EXTRA_ALLOWED_COMMANDS="git,npm,pip,apt,curl,wget,python,vim..."

3. 定期审查配置

检查 .bashrc 或配置文件中的设置:

grep SSH_ ~/.bashrc

4. 使用配置文件

创建 .env 文件(不要提交到 Git):

SSH_SECURITY_LEVEL=balanced
SSH_EXTRA_ALLOWED_COMMANDS=git,npm
SSH_BASE_DIR=/var/www

🔗 相关链接


安全第一,灵活配置! 🚀

Clone this wiki locally