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/
-
演示示例
输入:"查看服务器哪些目录占用磁盘比较多"
gemini会生成相应命令,询问你是否可以执行。回车确认。
![image-20260118083810657]()
-
配置步骤总览:获取Google AI Studio Key ---> 配置SSH远程端口转发 ---> 制作Gemini CLI免安装版 ---> 拉取代码快速启动Gemini CLI
-
环境:
- 个人电脑:MacBookAir M1
- 服务器:阿里云ECS Ubuntu 20.04(AMD64),Google Cloud Shell(AMD64)
获取Google AI Studio Key
-
要调用 Google Gemini API,首先必须申请一个 API Key,有了 API Key 之后,便可访问它,API Key 的申请地址为 https://aistudio.google.com/app/api-keys。登录进去后,点击“创建API密钥”,然后创建一个新的 API Key,创建完毕后,记得把 API Key 复制下来。
![截屏2026-01-18 07.45]()
-
获取地址:https://aistudio.google.com/app/api-keys
- 需要有账号,没有注册即可。
- 有免费额度。
配置SSH 远程端口转发
Gemini CLI部署到服务器后,使用时调用API需要连接外网,所以需要通过自己的笔记本或者可以连接外网的服务器做一下转发。
反向隧道:原理是:把服务器的请求 -> 发给 SSH 隧道 -> 传回你的电脑(或者可以通外网的服务器) -> 通过你电脑的代理软件(或者可以通外网的服务器) -> 访问外网。
个人电脑使用方法
-
登录
# 格式:ssh -R <服务器端口>:127.0.0.1:<你电脑的真实端口> ... ssh -R 7890:127.0.0.1:7897 ecs-user@服务器IP- 7890: 服务器端监听的端口
- 7897: 笔记本梯子程序实际工作的端口
- -R: 告诉 SSH 建立反向转发。
-
登录服务器后
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 -
验证
curl -I https://www.google.com注意:只在这个ssh窗口里做临时的运维动作(比如
curl测试、wget下载文件、pip install、docker pull),做完就关掉窗口。不要在这个窗口里启动长期运行的生产业务,因为关闭窗口转发就没有了。ping 协议是ICMP,所以不能用ping测试。
Google Cloud Shell使用方法
Google Cloud Shell为免费使用
使用方法:
-
登录Google Cloud(需要注册用户) :https://console.cloud.google.com/
-
登录后点击右上角控制台
![image-20260118091753069]()
-
进入控制台后点击"终端"图标
![截屏2026-01-18 09.18]()
-
登录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
-
登录后配置临时环境变量
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 -
验证
curl -I https://www.google.com注意:只在这个ssh窗口里做临时的运维动作(比如
curl测试、wget下载文件、pip install、docker pull),做完就关掉窗口。不要在这个窗口里启动长期运行的生产业务,因为关闭窗口转发就没有了。ping 协议是ICMP,所以不能用ping测试。
Gemini
Gemini CLI
手动安装(Mac版)
在笔记本(MacBookAir M1)安装Gemini CLI,并测试AI Studio Key是否可用
-
登录Google创建key,
这个是AI Studio(推荐):https://aistudio.google.com/app/api-keys
这个是Google Console通用的:https://console.cloud.google.com/apis/credentials
这两个都能使用,且调用的模型一样。AI Studio可以看到各种模型的调用统计以及限制和配额(有免费额度)。
-
安装node.js
# 安装 Node.js 18 或更高版本(可通过 node -v 查看当前版本) # mac系统 brew install node node -v -
安装google cli
# 全局安装 npm install -g @google/gemini-cli -
设置环境变量
export GEMINI_API_KEY="你的key" -
验证
# 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]()
-
免安装版本(服务器版本)
制作过程
创建一个代码仓库
-
下载node.js
curl -O https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-x64.tar.xz -
解压
tar xf node-v24.13.0-linux-x64.tar.xz -
删除tar包
rm -rf node-v24.13.0-linux-x64.tar.xz -
重命名
mv node-v24.13.0-linux-x64 ops-tools -
安装gemini cli
# 进入这个文件夹 cd ops-tools # 使用这个文件夹里的 npm 来安装 gemini cli # --prefix . 表示安装到当前目录,而不是全局 export PATH=$PWD/bin:$PATH ./bin/npm install -g @google/gemini-cli --prefix . -
验证是否安装成功
输出gemini帮助的相关信息即为成功
./bin/gemini --help -
打包
# 1. 回到上一级目录 cd .. # 打包 tar czf ops-tools.tar.gz ops-tools/ # 删除 mv ops-tools /tmp/ -
切分文件并上传代码仓库
因为Gitee普通用户单个文件限制50MB,单个代码仓库限制500MB。
# gemini.part_ 是文件前缀,生成的实际文件是 gemini.part_aa 等 split -b 40m ops-tools.tar.gz gemini.part_ # 验证,可以看到分成了三个文件 ls -lh gemini.part_* -
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]()
-
-
添加启动脚本
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
-
推送代码
1. rm -rf ops-tools/ 2. git push 提交代码Gitee仓库项目目录如下:
![截屏2026-01-18 12.52]()
使用方法
-
使用SSH远程端口转发的方式登录 服务器
-
git clone 代码到本地
-
运行脚本启动gemini
# 非交互式 ./gemini "你好" # 交互式 ./gemini -
输入/help 查看帮助信息;/model 切换模型
-
演示示例
输入:"查看服务器哪些目录占用磁盘比较多"
gemini会生成相应命令,询问你是否可以执行。回车确认。
![image-20260118083810657]()









浙公网安备 33010602011771号