Gemini CLI快速运维

  • 使用Google CLI 可以在服务器上使用命令行调用Gemini API,这样就可以让AI自主抉择,并且方便AI自己读取文件,读取日志,读取执行命令的输出信息,避免了人为频繁在服务器和WEB版AI之间来回复制、粘贴。并且来回复制粘贴还会遗漏重要信息或者步骤,无法提供完整的上下文,导致AI做出错误判断。
  • 在运维的角度考虑,每天要维护很多不同的服务器,所以不能按照正常的安装流程,因为占用时间太长,污染系统环境(下载包,手工配置相关参数等占用时间。安装的依赖包也可能和系统已有的依赖冲突,污染系统环境)。所以需要制作一个绿色免安装的Gemini CLI版本,并编写一个启动脚本,将脚本和Gemini CLI免安装版放在代码仓库中(注意设置为私有)。运维时,登录需要维护的服务器,git clone 代码,执行启动脚本即可。运维完毕,删除Gemini CLI项目目录,不留痕迹。
  • Google 于 2025 年 6 月 25 日正式发布了开源的 Gemini CLI,这款工具最初基于 Gemini 2.5 Pro 模型构建,旨在为开发者提供原生的命令行 AI 助手,支持代码编写、重构、调试以及整个代码库的自然语言分析。
  • 普通方式安装参考文章:https://apifox.com/apiskills/how-to-use-google-gemini-cli/
  1. 演示示例

    输入:"查看服务器哪些目录占用磁盘比较多"

    gemini会生成相应命令,询问你是否可以执行。回车确认。

    image-20260118083810657

  2. 配置步骤总览:获取Google AI Studio Key ---> 配置SSH远程端口转发 ---> 制作Gemini CLI免安装版 ---> 拉取代码快速启动Gemini CLI

  3. 环境:

    • 个人电脑:MacBookAir M1
    • 服务器:阿里云ECS Ubuntu 20.04(AMD64),Google Cloud Shell(AMD64)

获取Google AI Studio Key

配置SSH 远程端口转发

Gemini CLI部署到服务器后,使用时调用API需要连接外网,所以需要通过自己的笔记本或者可以连接外网的服务器做一下转发。

反向隧道:原理是:把服务器的请求 -> 发给 SSH 隧道 -> 传回你的电脑(或者可以通外网的服务器) -> 通过你电脑的代理软件(或者可以通外网的服务器) -> 访问外网。

个人电脑使用方法

  1. 登录

    # 格式:ssh -R <服务器端口>:127.0.0.1:<你电脑的真实端口> ...
    ssh -R 7890:127.0.0.1:7897 ecs-user@服务器IP
    
    • 7890: 服务器端监听的端口
    • 7897: 笔记本梯子程序实际工作的端口
    • -R: 告诉 SSH 建立反向转发。
  2. 登录服务器后

    export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
    
  3. 验证

    curl -I https://www.google.com
    

    注意:只在这个ssh窗口里做临时的运维动作(比如 curl 测试、wget 下载文件、pip installdocker pull),做完就关掉窗口。不要在这个窗口里启动长期运行的生产业务,因为关闭窗口转发就没有了。

    ping 协议是ICMP,所以不能用ping测试。

Google Cloud Shell使用方法

Google Cloud Shell为免费使用

使用方法:

  1. 登录Google Cloud Shell

    注:Google Cloud Shell 只会保留用户家目录下的文件(5G的磁盘使用量),运行的程序和非用户家目录下的文件都会定期清理。所以需要写一个脚本安装tinyproxy,每次使用时候执行。

    bash tinyproxy_start.sh
    

    脚本内容

    #!/bin/bash
    
    echo "开始初始化 Tinyproxy 环境..."
    
    # 1. 安装 Tinyproxy (如果系统重置了,这里会自动重装)
    if ! command -v tinyproxy &> /dev/null; then
        echo "检测到未安装 Tinyproxy,正在安装..."
        sudo apt-get update -qq
        sudo apt-get install tinyproxy -y -qq
    else
        echo "Tinyproxy 已安装"
    fi
    
    # 2. 自动生成配置文件 (直接覆盖 /etc/tinyproxy/tinyproxy.conf)
    # 注意:我们配置日志和PID文件到 /tmp,避免权限问题
    echo "正在生成配置文件..."
    sudo bash -c 'cat > /etc/tinyproxy/tinyproxy.conf <<EOF
    # --- 核心配置 ---
    User root
    Group root
    Port 8888
    Timeout 600
    MaxClients 100
    
    # --- 权限控制 ---
    Allow 127.0.0.1
    Allow ::1
    
    # --- 日志与进程 (放在 /tmp 保证 Cloud Shell 只有普通权限也能跑) ---
    LogFile "/tmp/tinyproxy.log"
    PidFile "/tmp/tinyproxy.pid"
    LogLevel Info
    EOF'
    
    # 3. 清理可能存在的旧进程 (防止端口冲突)
    sudo pkill tinyproxy
    # 等待一秒确保端口释放
    sleep 1
    
    # 4. 启动 Tinyproxy
    echo "正在启动 Tinyproxy..."
    # Cloud Shell 中建议直接用 sudo 启动,简单粗暴
    sudo tinyproxy -c /etc/tinyproxy/tinyproxy.conf
    
    # 5. 验证状态
    echo "检查端口状态:"
    # 检查 8888 端口
    if sudo netstat -tunlp | grep :8888 > /dev/null; then
        echo "成功!Tinyproxy 正在监听 8888 端口"
        echo "端口详情:"
        sudo netstat -tunlp | grep tinyproxy
        echo "----------------------------------------"
        echo "现在你可以执行 SSH 命令了:"
        echo "ssh -R 7890:127.0.0.1:8888 ecs-user@你的服务器IP"
    else
        echo "启动失败,请检查报错。"
    fi
    
    • 更改倒数第四行为实际服务器IP
  2. 登录后配置临时环境变量

    export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
    
  3. 验证

    curl -I https://www.google.com
    

    注意:只在这个ssh窗口里做临时的运维动作(比如 curl 测试、wget 下载文件、pip installdocker pull),做完就关掉窗口。不要在这个窗口里启动长期运行的生产业务,因为关闭窗口转发就没有了。

    ping 协议是ICMP,所以不能用ping测试。

Gemini

Gemini CLI

手动安装(Mac版)

在笔记本(MacBookAir M1)安装Gemini CLI,并测试AI Studio Key是否可用

  1. 登录Google创建key,

    这个是AI Studio(推荐):https://aistudio.google.com/app/api-keys

    这个是Google Console通用的:https://console.cloud.google.com/apis/credentials

    这两个都能使用,且调用的模型一样。AI Studio可以看到各种模型的调用统计以及限制和配额(有免费额度)。

  2. 安装node.js

    # 安装 Node.js 18 或更高版本(可通过 node -v 查看当前版本)
    # mac系统
    brew install node 
    node -v
    
  3. 安装google cli

    # 全局安装
    npm install -g @google/gemini-cli
    
  4. 设置环境变量

    export GEMINI_API_KEY="你的key"
    
  5. 验证

    # gemini cli本意是帮助管理代码项目,如果在默认的目录下,会提示,所以切换到一个非主目录下执行就不会有提示了,安全一些,防止Gemini或者人失误操作重要文件。
    # mac 需要export https_proxy=http://127.0.0.1:7897,否则连接不上外网。Windows未测试。
    # export只在本次会话生效,关闭窗口即失效。
    cd Desktop/gemini_test
    export https_proxy=http://127.0.0.1:7897 && gemini "你好"
    
    • 能够正常返回消息没有报错即成功,如下图:

      截屏2026-01-18 18.02

    • 交互式启动

      # 如果上一步骤执行了export,这一步就不用再执行export了。export只在本次会话生效,关闭窗口即失效。
      export https_proxy=http://127.0.0.1:7897
      gemini
      

      截屏2026-01-18 18.08

免安装版本(服务器版本)

制作过程

创建一个代码仓库

  1. 下载node.js

    curl -O https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-x64.tar.xz
    
  2. 解压

    tar xf node-v24.13.0-linux-x64.tar.xz 
    
  3. 删除tar包

    rm -rf node-v24.13.0-linux-x64.tar.xz
    
  4. 重命名

    mv node-v24.13.0-linux-x64 ops-tools
    
  5. 安装gemini cli

    # 进入这个文件夹
    cd ops-tools
    
    # 使用这个文件夹里的 npm 来安装 gemini cli
    # --prefix . 表示安装到当前目录,而不是全局
    export PATH=$PWD/bin:$PATH
    ./bin/npm install -g @google/gemini-cli --prefix .
    
  6. 验证是否安装成功

    输出gemini帮助的相关信息即为成功

    ./bin/gemini --help
    
  7. 打包

    # 1. 回到上一级目录
    cd ..
    # 打包
    tar czf ops-tools.tar.gz ops-tools/
    
    # 删除
    mv ops-tools /tmp/
    
  8. 切分文件并上传代码仓库

    因为Gitee普通用户单个文件限制50MB,单个代码仓库限制500MB。

    # gemini.part_ 是文件前缀,生成的实际文件是 gemini.part_aa 等
    split -b 40m ops-tools.tar.gz gemini.part_
    
    # 验证,可以看到分成了三个文件
    ls -lh gemini.part_*
    
  9. gemini cli启动验证(手动验证)

    • 在要运行gemini cli的服务器拉取代码。注意登录服务器的方式为上面《配置SSH远程端口转发》的步骤

    • 配置临时环境变量

      export https_proxy=http://127.0.0.1:7890
      # 验证 curl -I https://www.google.com
      export PATH="/root/geminicli/ops-tools/bin:$PATH"
      export GEMINI_API_KEY="你的key"
      
      • PATH 中的路径根据实际情况更改:

        PATH="${拉取代码时所在目录绝对路径}/geminicli/ops-tools/bin:$PATH"

      • 将GEMINI_API_KEY的值填写为实际的Google AI Studio API Key

    • 启动gemini

      ./geminicli/ops-tools/bin/gemini
      

      输入"你好",gemini回复后即表示启动成功,网络连接成功。

      截屏2026-01-18 08.21

  10. 添加启动脚本

    vim gemini

    #!/bin/bash
    
    # ================= 配置区域 =================
    export GEMINI_API_KEY="你的key"
    # 阿里云等国内服务器可能需要代理
    export http_proxy="http://127.0.0.1:7890"
    export https_proxy="http://127.0.0.1:7890"
    export HTTP_PROXY="http://127.0.0.1:7890"
    export HTTPS_PROXY="http://127.0.0.1:7890"
    export ALL_PROXY="http://127.0.0.1:7890"
    # 禁用 SSL 严格检查 (推荐保留)
    export NODE_TLS_REJECT_UNAUTHORIZED=0
    
    # ================= 逻辑区域 =================
    BASE_DIR=$(cd "$(dirname "$0")"; pwd)
    TOOLS_DIR="$BASE_DIR/ops-tools"
    
    # 1. 检查是否需要解压
    if [ ! -d "$TOOLS_DIR" ]; then
        echo "首次运行,正在组装并初始化环境..."
        
        # 检测分片文件
        if ls "$BASE_DIR"/gemini.part_* 1> /dev/null 2>&1; then
            # 核心逻辑:把所有碎片拼回一个大文件,然后解压
            # 使用管道直接解压,连临时大文件都不用生成,省空间
            cat "$BASE_DIR"/gemini.part_* | tar -xz -C "$BASE_DIR"
            
            if [ $? -eq 0 ]; then
                echo "环境组装完毕!"
            else
                echo "解压失败,可能是分片文件损坏。"
                exit 1
            fi
        else
            echo "错误:找不到 gemini.part_* 分片文件。"
            exit 1
        fi
    fi
    
    # ================= 3. 启动逻辑 =================
    
    # 将便携版 node 加入 PATH
    export PATH="$TOOLS_DIR/bin:$PATH"
    
    # 【核心修改】使用 exec 启动
    # 1. exec 会让 Gemini 直接替换当前 Shell 进程,完美处理交互信号
    # 2. 如果不加参数直接运行 ./gemini,Gemini 默认就会进入交互模式
    exec gemini "$@"
    
    • 将GEMINI_API_KEY的值填写为实际的Google AI Studio API Key
    • chmod +x gemini
  11. 推送代码

    1. rm -rf ops-tools/
    2. git push 提交代码
    

    Gitee仓库项目目录如下:

    截屏2026-01-18 12.52

使用方法

  1. 使用SSH远程端口转发的方式登录 服务器

  2. git clone 代码到本地

  3. 运行脚本启动gemini

    # 非交互式
    ./gemini "你好"
    
    # 交互式
    ./gemini
    
  4. 输入/help 查看帮助信息;/model 切换模型

  5. 演示示例

    输入:"查看服务器哪些目录占用磁盘比较多"

    gemini会生成相应命令,询问你是否可以执行。回车确认。

    image-20260118083810657

posted @ 2026-01-18 11:55  清葵雨露  阅读(23)  评论(0)    收藏  举报