2026年SSH远程开发实战:把Claude Code的settings改到TaoToken直写服务器代码
1. SSH 远程开发为什么值得折腾Claude Code 直连服务器写代码的真实场景SSH 远程开发这件事说白了就是把你的编辑器、终端、AI 助手全部搬到服务器那一侧去跑本地只留一个显示和输入的窗口。Claude Code 这类命令行 AI 编程工具天生就是为终端环境设计的它读写文件、执行命令、查看日志都发生在当前工作目录所在的机器上。所以当你通过 SSH 连到服务器再启动 Claude Code它看到的 nginx 配置、docker-compose.yml、systemd 服务文件、应用日志全都是真实运行环境里的那一份而不是你本地同步过来的副本。这个差别在排查线上问题时特别明显。本地开发时你改完代码要 push、要部署、要等 CI中间隔了好几层而在服务器上直接让 Claude Code 读错误日志、定位崩溃进程、改配置文件、重启服务整个链路是闭合的。我试过用这种方式处理一次 502 报错从看日志到改完 docker-compose 的内存限制再重启前后不到十分钟换成以前本地改完再部署的流程光等构建就得半小时。适合谁用这套方案第一类是独立开发者和中小团队服务器就一两台没有复杂的 K8s 编排直接 SSH 上去改最直接第二类是运维和全栈需要经常登服务器看状态、调参数第三类是本地机器性能一般想把编译、跑测试这些重活丢给服务器的开发者。反过来说如果你的项目有严格的发布流程、所有变更必须走 PR 和 CI那直接在服务器上改代码就不合适这时候 SSH 远程开发更适合用来做排查和临时修复而不是日常开发。环境准备上服务器端需要 Node.js 18 以上Claude Code CLI 的运行依赖一个可用的 SSH 账号以及能访问外网的能力。客户端这边VS Code 装好 Remote - SSH 插件就够了或者你直接用系统终端 ssh 进去也行。下面这张表是我实测下来两种连接方式的取舍方式优点适合场景VS Code Remote SSH图形化编辑、文件树、集成终端日常写代码、多文件改动纯终端 ssh轻量、启动快、资源占用低快速排查、临时改配置不管你选哪种核心都是先在服务器上把 Claude Code 跑起来再让它指向一个稳定的模型通道。这一步的鉴权和端点配置就是后面几节要讲的重点。2. TaoToken 前置准备统一 Key 与 API 通道在 Claude Code 里的定位Claude Code 默认会去连 Anthropic 官方的接口但在国内服务器环境下直连经常不稳定而且计费和额度管理也比较分散。TaoToken 在这里扮演的角色是一个统一的模型接入通道你用同一个 Key就能调用包括 Claude 系列在内的多种模型端点也统一成一个地址配置起来只需要改几个字段。先把几个关键地址记清楚后面配置里会反复用到官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基础地址https://taotoken.net/api模型对话体验页https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentCoding Plan 订阅页https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content你需要提前拿到两样东西一个是 API Key在 API Keys 页面创建格式通常是一串以特定前缀开头的长字符串另一个是你要用的模型 ID比如 Claude 系列的具体型号名这个在模型列表或接入文档里能查到。Key 只在创建时完整显示一次记得当场复制保存后面配置里要用。这里要强调一个概念Claude Code 的配置分两层。一层是环境变量比如ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN它们决定请求发往哪里、用什么身份另一层是settings.json用来固化模型选择、权限策略、工具开关这些行为。很多人只改了环境变量就以为完事了结果模型还是默认的那个或者权限弹窗一直拦着就是因为 settings.json 没同步。注意Key 属于敏感凭证不要写进会提交到 Git 的文件里。服务器上的配置建议放在用户主目录下的隐藏目录并确认该目录不在任何仓库的追踪范围内。如果你打算长期在服务器上跑编码任务Coding Plan 会比按量计费更划算额度覆盖日常的代码生成和排查足够用。短期试用的话先用按量 Key 跑通流程确认稳定了再决定要不要订阅。3. 可复制配置settings.json 与 SSH 环境变量完整片段这一节是整篇的核心所有片段都可以直接复制只需要把 Key 和模型 ID 换成你自己的。Claude Code 在 Linux 服务器上的配置目录是~/.claude/主配置文件是~/.claude/settings.json。如果这个目录不存在先手动创建mkdir -p ~/.claude然后是 settings.json 的完整内容。这个片段里我把模型、端点相关的环境变量、权限模式都放进去了路径和字段名与 Claude Code 实际读取的一致{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514, ANTHROPIC_SMALL_FAST_MODEL: claude-3-5-haiku-20241022 }, permissions: { allow: [ Read, Edit, Bash(git status), Bash(git diff), Bash(docker ps), Bash(docker logs:*) ], deny: [ Bash(rm -rf:*), Bash(shutdown:*) ] }, model: claude-sonnet-4-20250514 }几个字段解释一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址注意结尾不要多加斜杠Claude Code 会自己拼接路径。ANTHROPIC_AUTH_TOKEN填你创建的 Key。ANTHROPIC_MODEL是主模型负责主要的代码生成和推理ANTHROPIC_SMALL_FAST_MODEL是轻量模型用于一些快速判断和补全填一个便宜快速的型号能省额度。permissions.allow里我放了一些只读和查看类命令这样 Claude Code 执行这些命令时不会每次都弹确认deny里挡掉了危险操作避免误删。如果你不想把 Key 写进 settings.json也可以用环境变量的方式在~/.bashrc或~/.zshrc里追加export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的TaoToken密钥 export ANTHROPIC_MODELclaude-sonnet-4-20250514改完执行source ~/.bashrc让它生效。环境变量的优先级高于 settings.json 里的 env 段两种方式选一种就行别同时配导致自己搞混。SSH 这边客户端~/.ssh/config建议加上保活参数否则长时间不操作连接会断Claude Code 跑到一半掉线很烦Host myserver HostName 你的服务器IP User deploy IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 60 ServerAliveCountMax 3 ForwardAgent yesServerAliveInterval 60表示每 60 秒发一次保活包ServerAliveCountMax 3表示连续 3 次没响应才断开。ForwardAgent yes让你在服务器上能用本地的 SSH 密钥去拉 Git 仓库省得在服务器上再配一套密钥。服务器端的 SSH 安全配置编辑/etc/ssh/sshd_configPasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3 ClientAliveInterval 60 ClientAliveCountMax 3改完sudo systemctl restart sshd重启服务。注意改之前确认你的公钥已经加到~/.ssh/authorized_keys否则重启后自己都登不上去。4. 验证请求ssh 连接后运行 claude 的命令与预期输出配置写完接下来就是验证。整个过程分三步连上服务器、确认环境变量生效、启动 Claude Code 发一个真实请求。第一步从本地连服务器ssh myserver连上后先确认 Node 和 Claude Code 都在node -v claude --versionnode -v应该输出 v18 以上的版本号claude --version输出 CLI 的版本。如果提示 command not found说明 Claude Code 没装或者不在 PATH 里用npm install -g anthropic-ai/claude-code装一下。第二步确认环境变量读到了echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_AUTH_TOKEN | head -c 8第一行应该输出https://taotoken.net/api第二行输出你 Key 的前 8 位只显示前几位是为了避免完整 Key 出现在终端历史里。如果第一行是空的说明环境变量没生效检查是不是忘了 source或者 settings.json 的路径不对。第三步启动 Claude Code 并发一个请求。进入你的项目目录然后cd /var/www/myapp claude进入交互界面后输入一句简单的测试帮我看看当前目录下有哪些文件并说明这个项目的技术栈预期输出是 Claude Code 会调用 Read 和 Bash 工具列出目录内容然后根据 package.json 或 requirements.txt 判断技术栈给出结构化的回答。如果配置正确你会看到它正常读取文件、正常返回结果没有任何鉴权报错。想更直接地验证端点通不通可以用一条非交互命令claude -p 用一句话说明当前目录是什么项目-p是 print 模式执行完直接输出结果就退出适合脚本化验证。正常的话几秒内返回一句话描述。如果卡住不动或者报错就进入下一节的排查流程。实测下来从 ssh 登录到看到 Claude Code 正常返回整个流程熟练后两分钟内能搞定。第一次配可能会在环境变量和权限上卡一会儿把报错对照下一节基本都能解决。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 问题配置过程中最容易撞上的就是这几类报错我按实际遇到的频率排一下每条给出原因和解决办法。401 Unauthorized / authentication_error这是最常见的意思是 Key 没被识别。可能原因有三个Key 复制时带了空格或换行、Key 已经失效或被删除、ANTHROPIC_AUTH_TOKEN这个变量名写错了有人写成ANTHROPIC_API_KEYClaude Code 读的是前者。排查方法echo $ANTHROPIC_AUTH_TOKEN | wc -c正常长度应该是 Key 字符数加 1换行符。如果明显偏短或偏长就是复制出了问题。重新去 API Keys 页面复制一次注意别选中前后的空白。如果变量名写错改成ANTHROPIC_AUTH_TOKEN再 source 一次。local proxy failed / connection refused这个报错说明请求根本没发出去卡在本地网络层。常见于服务器上配了 HTTP 代理但代理没起来或者ANTHROPIC_BASE_URL写成了一个本地地址。检查echo $ANTHROPIC_BASE_URL curl -I https://taotoken.net/api第一行确认是https://taotoken.net/api第二行确认服务器能正常访问这个域名。如果 curl 也失败说明是服务器出网的问题检查安全组和 DNS 解析。如果 curl 通但 Claude Code 报 local proxy failed检查有没有HTTP_PROXY/HTTPS_PROXY这类环境变量指向了一个不存在的本地端口有的话 unset 掉。reading choices / unexpected response format这个报错通常出现在端点地址不对的时候。比如ANTHROPIC_BASE_URL填成了https://taotoken.net少了/api或者结尾多加了斜杠变成https://taotoken.net/api/导致请求路径拼接错误返回的内容不是预期的 JSON 结构Claude Code 解析时就报 reading choices 失败。解决办法就是把地址严格写成https://taotoken.net/api不多不少。OAuth / login requiredClaude Code 有时会提示需要登录或走 OAuth 流程这是因为它在没有检测到有效鉴权信息时会回退到官方登录。出现这个说明你的ANTHROPIC_AUTH_TOKEN没被读到。确认 settings.json 的 env 段和环境变量至少有一个生效并且变量名正确。如果两个都配了但还报 OAuth检查 settings.json 的 JSON 格式有没有语法错误用python -m json.tool ~/.claude/settings.json验证一下。模型不存在 / model not foundKey 和端点都对但模型 ID 填错了。去接入文档或模型列表里核对准确的模型 ID注意大小写和日期后缀。ANTHROPIC_MODEL和ANTHROPIC_SMALL_FAST_MODEL两个都要填有效值任何一个无效都可能导致请求失败。把这几类报错对照一遍基本能覆盖 90% 的配置问题。排查时养成先看环境变量、再看端点、最后看模型 ID 的顺序比盲目改配置高效得多。6. 长期编码与 Agent 场景把 SSH 远程开发固化成日常流程跑通验证之后接下来要考虑的是怎么把这套流程变成日常习惯而不是每次都要重新配一遍。我的做法是把配置固化下来让新开的 SSH 会话自动带上正确的环境。在服务器上把环境变量写进~/.bashrc之后每次登录自动生效。如果你用 VS Code Remote SSH它打开的集成终端也会读取这个文件所以图形化编辑和命令行是共享同一套配置的。项目级别的差异比如不同项目要用不同模型可以放在项目根目录的.claude/settings.json里Claude Code 会优先读项目级的配置这样切项目时模型和权限策略自动跟着变。对于需要长时间跑的编码任务比如让 Claude Code 批量重构一个模块、生成测试用例、或者做代码审查建议配合 tmux 使用。SSH 连接断了任务也不会中断tmux new -s coding claude在 tmux 会话里跑 Claude Code即使本地网络波动掉线重新 ssh 上来tmux attach -t coding就能接回原来的会话任务继续跑。这个习惯在跑大任务时特别有用我踩过的坑就是没开 tmux跑到一半断线前面的上下文全丢了。权限策略上日常开发可以把常用的只读命令和安全的写操作加进permissions.allow减少确认弹窗的打断。但危险命令一定要留在deny里尤其是rm -rf、shutdown、reboot这类。服务器上误操作的代价比本地大得多宁可多弹几次确认。如果你经常需要在多个服务器之间切换可以给每台机器配一个 SSH Host 别名然后在各自的~/.claude/settings.json里放不同的模型配置。比如测试服务器用便宜快速的模型生产排查用能力更强的模型切换时只需要ssh test或ssh prod配置自动跟着走。长期用下来Coding Plan 的额度模式比按量计费更省心不用担心某个月任务多就超支。日常的代码生成、日志分析、配置修改这些高频操作额度覆盖得比较充分。需要临时用更强的模型处理复杂问题时再单独走按量通道两种模式可以并存。最后留一个实用技巧把常用的排查命令组合写成 Claude Code 的自定义指令放在~/.claude/commands/目录下之后用斜杠命令直接调用。比如一个check-service.md里写好检查容器状态、看最近日志、确认端口监听的步骤排查时一句/check-service就能让 Claude Code 按固定流程走一遍比每次重新描述需求快很多。这套流程固化下来之后SSH 远程开发加 Claude Code 就真正变成了日常生产力而不是偶尔用一次的玩具。

相关新闻

DRN双回归网络:闭环优化单图像超分与下游任务

DRN双回归网络:闭环优化单图像超分与下游任务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:12:59 阅读更多 →
AI热点日报 | 2026年8月19日:MCP与CLI驱动下的AI Agent落地观察

AI热点日报 | 2026年8月19日:MCP与CLI驱动下的AI Agent落地观察

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:12:59 阅读更多 →
PHP 7.4 编译报错 libzip 缺失?从 pkg-config 原理到源码编译全解析

PHP 7.4 编译报错 libzip 缺失?从 pkg-config 原理到源码编译全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:12:59 阅读更多 →

最新新闻

MATLAB BSM1污水处理仿真系统:开箱即用的活性污泥模型

MATLAB BSM1污水处理仿真系统:开箱即用的活性污泥模型

简介:本资源是基于Black-Scholes-Merton期权定价理论实现的MATLAB教学与研究型模型包,面向金融工程初学者、量化分析入门者及本科毕业设计学生,用于理解欧式期权定价机制、参数敏感性(希腊字母)计算及波动率建模等核心…

2026/10/17 10:50:10 阅读更多 →
手写C++实现AGNES层次聚类:核心原理与工程实践

手写C++实现AGNES层次聚类:核心原理与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:50:10 阅读更多 →
基于Spring MVC与Hibernate的校园失物招领系统设计与实现

基于Spring MVC与Hibernate的校园失物招领系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:50:10 阅读更多 →
Spring Boot logback异常邮件告警实战配置

Spring Boot logback异常邮件告警实战配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:50:10 阅读更多 →
非侵入式负荷监测NILMTK工具包:配置、数据转换与调参实战

非侵入式负荷监测NILMTK工具包:配置、数据转换与调参实战

简介:面向电力负荷辨识(NILM)研究者的完整可运行项目包,基于REDD低频数据集,提供组合优化(CO)与隐马尔可夫模型(FHMM)两种分解预测方法,适用于在PyCharm及Pyt…

2026/10/17 10:50:10 阅读更多 →
Jev开发模式:VS Code与IntelliJ协同工作流实战指南

Jev开发模式:VS Code与IntelliJ协同工作流实战指南

1. “Jev”不是新模型,是网友对“JetBrains IDE VS Code”混用现象的戏称最近刷到好几条标题写着“Jev是什么?哑巴模型居然全网爆火”,点进去发现既没有AI模型论文,也没有开源仓库,更没见哪家大厂发布技术白皮书——反…

2026/10/17 10:49:10 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →