上个月我把一台放了很久的 Ubuntu 机器重新擦干净装成开发机,折腾完 Claude Code 之后,整个终端工作流基本就离不开了。说实话,这类 AI 编程工具在网页上用和在终端里用完全是两种体验——Claude Code 直接跑在命令行里,能看懂整个项目仓库,改起代码来像有个同事坐在旁边给你递补丁。这篇教程就是我从零开始,在一台干净的 Ubuntu 系统上完整部署 Claude Code 的记录,包括本地桌面环境和云端服务器两种跑法。如果你正准备把 Claude Code 装到自己的 Linux 开发环境里,跟着一步步走就行。
1. Claude Code 到底是什么,为什么值得装进 Ubuntu 终端
先聊清楚一个事情:Claude Code 不是一个网页套壳,也不像有些工具那样只给你生成一段代码让你自己复制粘贴。它本质上是一个跑在终端里的 AI 编程助手,启动之后你可以用自然语言直接跟它对话,比如"帮我把这个模块的重试逻辑整理一下"、"给这个函数补单元测试"、"查一下为什么这个接口偶发超时"。它会自己去读项目文件、搜索代码、执行测试命令,然后用 diff 的形式把改动直接呈现在你面前,你确认之后才会写入文件。
1.1 和网页版、IDE 插件的核心区别
- 网页版适合单次问答,但它看不到你的完整项目结构和历史改动
- IDE 插件需要你打开编辑器才能用,云端服务器或者纯命令行环境下很难集成
- Claude Code 运行在终端里,跟 Git、SSH、项目目录天然贴合,特别适合远程开发、CI 脚本、服务器运维这类场景
我在实际使用中最明显的感受是:它不挑环境。只要有一台能跑 Node.js 的 Linux 机器,你就能用。对于经常要 SSH 到云服务器上排查问题的场景,这个东西比开一个完整的 IDE 轻太多。
1.2 适合谁来用
- 用 Ubuntu 做主力开发机的后端工程师、运维工程师
- 在云服务器上跑自动化任务、需要 AI 辅助写脚本和排查日志的人
- 想把手头的 AI 工具链从"网页问答"升级到"项目级操作"的开发者
1.3 它到底能帮你做什么
举个我自己的实际案例:之前有个旧项目里有大量重复的 HTTP 请求封装,每个文件里都复制粘贴了一大段。我用 Claude Code 在项目根目录启动,输入一句"把公共请求逻辑提取成一个工具函数,所有文件改成调用它",它直接列出了涉及的文件清单、改动方案和风险点,我确认后就逐个文件改完了。如果让我自己手动改,至少一小时起步,那次整个过程不到十分钟。
2. 动手安装之前,先检查这三件事
很多人在 Ubuntu 上装 Claude Code 卡住,其实卡住的点都特别基础:Node.js 版本太老、npm 版本不对、或者压根没确认过自己的登录凭证。所以我在这一步会多说几句,别急着敲安装命令。
2.1 Node.js 版本:老 Ubuntu 最常见的坑
Claude Code 是 Node.js 写的,对运行环境有最低版本要求。按照官方说明,Node.js 18 以上的版本可以正常运行,但我的实际建议是直接上 Node.js 20 LTS 或者更高。如果你是新装的 Ubuntu 20.04 或者 22.04,直接apt install nodejs装出来的版本往往只有 10.x 或者 12.x,这个是跑不起来的。
我整理了一张版本情况对照表:
| Ubuntu 版本 | apt 默认 Node.js | 能否直接跑 Claude Code | 建议方案 |
|---|---|---|---|
| 20.04 Focal | Node.js 10.x | 不能 | 用 nvm 安装 Node.js 20 LTS |
| 22.04 Jammy | Node.js 12.x | 不能 | 用 nvm 安装 Node.js 20 LTS |
| 24.04 Noble | Node.js 18.x | 勉强可以,但建议升级 | 用 nvm 安装 Node.js 20 LTS |
提示:不是你手动编译一个高版本 Node.js 就能解决所有问题,关键是
npm和npx命令也要跟着新版本走。如果你已经在系统里装过低版本 Node.js,之后再装 nvm 可能会遇到命令冲突,建议先看清楚现在的执行路径。
2.2 npm 的配置和权限:EACCES 错误都是从这里来的
Ubuntu 的系统级npm在全局安装包时经常遇到权限问题,最典型的就是执行npm install -g的时候报EACCES: permission denied。遇到这个情况,我不推荐直接用sudo npm install,那样会把所有全局包都装到 root 目录下,后续用起来容易出乱子。
更稳妥的办法就是直接装一个nvm,让 Node.js 和你安装的全局包都放在当前用户目录下,彻底绕开/usr/lib/node_modules的系统写权限问题。这部分我会在下一章详细写步骤。
2.3 登录凭证准备
Claude Code 在使用前需要完成一次身份认证。你需要有一个可用的 Claude 账号,然后按照终端里的提示完成授权。如果你是在本地桌面版的 Ubuntu 上操作,会弹出浏览器窗口确认权限;如果是在纯命令行的云端服务器上操作,流程会稍微不一样,后面第四节会单独说。
这里强调一句:如果你已经可以正常登录 Claude 官网使用服务,认证这一步基本就是顺畅的,准备好对应账号的邮箱和密码就行。
3. 一步一步装好 Claude Code:我用的完整命令记录
这一章纯步骤,你照着敲就行。我尽量把每一步为什么这么做讲清楚,遇到问题也知道怎么回头查。
3.1 第一步:用 nvm 安装 Node.js 20 LTS
我个人非常推荐用 nvm 来管理 Node.js 版本,尤其你以后可能还要跑其他 Node 项目。nvm 最大的好处是不同项目的 Node 版本可以切换,不会互相污染。
先安装 nvm 的依赖基础,然后拉取安装脚本:
sudo apt update sudo apt install curl git curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装完成之后,重新打开终端或者执行下面的命令让 nvm 生效:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"然后装上 Node.js 20 LTS:
nvm install 20 nvm alias default 20 node -v npm -v看到v20.x.x和对应的 npm 版本,这一步就算过了。我在这台机器上跑的是 v20.18.0,Claude Code 的安装过程没有遇到任何版本兼容问题。
注意:如果你打开新的终端后
node命令找不到,多半是 nvm 环境变量没有自动写入~/.bashrc,检查一下安装脚本是否在.bashrc末尾追加了相关配置,没有的话手动加进去。
3.2 第二步:安装 Claude Code
Node.js 环境就绪后,安装 Claude Code 就一条命令的事:
npm install -g @anthropic-ai/claude-code这一步会从 npm 仓库拉取包然后做全局安装。装完之后验证一下:
claude --version如果终端能输出类似1.x.x的版本号,说明核心程序已经装好了。这时候你就已经可以在任意项目目录里启动claude了。
我在实际安装中看到,这个包有一些原生模块依赖,npm 在安装时会自动处理,正常情况下不需要你手动装其他编译工具。但如果你用的是比较精简的 Ubuntu Server 版本,缺了build-essential的话,理论上也可能触发 node-gyp 编译问题,保险起见可以提前执行:
sudo apt install build-essential3.3 第三步:首次启动和认证
在准备用 Claude Code 的目录里直接输入:
claude第一次运行时,它会提示你完成登录。桌面版 Ubuntu 会打开浏览器,跳转到授权页面,你确认账号并授权就行。如果你是纯命令行环境,它会给你一个一次性验证码或者跳转到专门的授权链接,完整的流程会出现在终端里,按提示操作即可。
认证完成后,程序会把凭证信息保存在当前用户目录的配置文件中,之后使用就不需要反复登录了。
提示:这个凭证文件建议做好备份,尤其是云端服务器场景,重装系统后直接复用能省掉重新认证的麻烦。
3.4 第四步:在项目目录里跑通一次完整对话
认证完毕,随便进入一个你的代码项目,输入claude,它会扫描项目文件并给出一些项目理解的提示。此时你可以试着问一句:
帮我看看这个项目的目录结构,然后告诉我哪些地方最值得增加测试。如果它正常回复,并且你能看到它对文件进行了检索和引用,恭喜你,这次安装就算真正跑通了。
4. 本地桌面版和云端服务器两种部署跑法有什么不一样
很多人忽略一个问题:在同一套安装步骤下,本地 Ubuntu 桌面机和云端 Ubuntu 服务器在认证方式、进程管理、权限控制上其实是有区别的。这一章我把两种环境的差异和各自的部署建议拆开讲。
4.1 本地桌面 Ubuntu:适合日常编码和交互式使用
本地环境最省心。认证走浏览器,使用走交互式界面,你直接在一个终端窗口里启动claude,就像打开一个集成在项目里的聊天窗。本地跑法的核心优势是:
- 可以随时用图形界面查看改动后的文件、跑 git diff
- 需要看代码运行结果时可以并行开多个终端
- 不受 SSH 断连影响,进程挂在本地
我现在的主力开发机就是 Ubuntu 桌面系统,平时写代码、改配置、查日志全在终端里完成。Claude Code 和 VSCode 的终端也可以配合使用,你在编辑器里写好代码后,直接在底部终端启动claude,它会自动识别当前工作目录。
4.2 云端无桌面服务器:适合自动化、批处理和长时间任务
云端服务器通常没有图形界面,你通过 SSH 连接,所有操作都是纯文本。这种场景下 Claude Code 同样可用,但我建议注意三个点。
第一,认证流程。无头服务器上没有浏览器,你需要用终端里给出的授权链接在本地电脑浏览器打开并完成认证,然后把会话令牌复制回服务器。这个流程官方支持,按照提示操作就行。
第二,保持会话。用 SSH 连接云服务器时,如果连接中断,正在运行的claude进程就会收到挂断信号。我一般用tmux或者screen把会话挂起来,这样即使 SSH 断了,Claude Code 还能继续执行之前的任务。命令大致是这样:
tmux new -s claude-session claude # 需要退出时先按 Ctrl+b,再按 d 分离会话 # 之后使用 tmux attach -t claude-session 重新接回第三,权限控制。云端服务器通常有多个开发者和自动化任务共存,给 Claude Code 一个尽量小的权限范围更稳妥。我一般不让它直接访问整个文件系统,而是通过项目的权限配置把可操作范围限制在当前目录下。
4.3 一台机器上同时跑多个项目实例
如果你的开发状态是同时维护多个项目,可以每个项目开一个终端窗口分别启动claude,它会把各自的目录作为工作上下文,互不干扰。官方还支持通过配置项指定工作目录,这个后面在进阶配置里讲。
5. 安装部署过程中我踩过的坑:完整排查链路
每次写教程,我都想把踩坑排查的过程放进来,因为直接告诉你"这样做就能成功"其实价值有限,真正能帮你节省时间的往往是怎么定位问题。
5.1 坑一:Ubuntu 系统自带的 Node.js 太旧,导致启动报错
第一次在一台 Ubuntu 22.04 机器上装,我图省事直接用了默认的 apt 源安装 Node.js:
sudo apt install nodejs npm当时查版本:
node -v # v12.22.9装完 Claude Code 后执行claude --version,结果报了一连串的语法错误。这种错误通常不是 Claude Code 本身的问题,而是 Node.js 版本过低,代码里用了高版本才支持的语法特性,旧版本解析不了。
排查思路:先看 Node.js 版本,确认是不是太低;再看which claude指向的全局路径是否和当前 Node.js 属于同一套环境。我最后删掉 apt 装的旧版本,改用 nvm 装上 Node.js 20,问题直接消失。
5.2 坑二:npm 全局安装时出现 EACCES 权限报错
如果你没有用 nvm 而是保留了系统级的 Node.js,执行npm install -g很可能遇到这个报错:
npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr/lib/node_modules/@anthropic-ai原因很直接:全局安装包需要写/usr/lib/node_modules目录,而这个目录归 root 所有,当前用户没有写权限。很多人会顺手加sudo,我当时也试过,虽然能装上,但后面 npm update 和卸载都会带上权限泥潭。所以我现在遇到这种情况都会劝一句:别跟权限较劲,直接切换到 nvm 或者通过设置 npm 全局目录到用户目录来解决。
5.3 坑三:认证成功后claude仍然提示未登录
这种一般不是安装问题,而是凭证没有落盘成功。常见原因是你使用了sudo安装了 Claude Code,或者启动时用了sudo claude,导致它把凭证写到了 root 用户目录,而你自己用户的终端读不到。
排查思路:检查~/.claude目录是否存在且有正常内容;如果你刚才用 sudo 跑过,也可以直接对比/root/.claude目录。遇到过好几个人问我"为什么明明登录成功了下一次又要登录",基本都是这个原因。
5.4 坑四:claude命令找不到
这种情况最常出现在"装是装成功了,但新开的终端找不到命令"上。原因通常是 nvm 相关的环境变量没有加载,或者 npm 全局目录不在 PATH 里。
排查链路:
which npm npm config get prefix ls $(npm config get prefix)/bin | grep claude如果最后一条找不到 claude,说明安装路径异常;如果找得到但新终端不认,就去~/.bashrc里看 nvm 的初始化配置是否确实生效了。
5.5 坑五:云端无头服务器上认证链接打不开
在云服务器上首次认证时,终端会输出一个授权链接。很多人习惯直接在服务器上用文本浏览器去开,那个体验很差。正确做法是把链接复制到你自己电脑的浏览器里打开,完成授权后回到服务器终端继续。这个流程不复杂,但如果不清楚原理,很容易卡在"链接打不开"这一步。
6. 装完之后,这几种配置能让它更好用
安装只是开始。经过这段时间的使用,我发现下面几个配置项和习惯对实际效率提升最明显。
6.1 利用项目里的 CLAUDE.md 文件固定上下文
Claude Code 会读取项目根目录下的CLAUDE.md文件作为长期记忆。你可以在这个文件里写清楚项目的技术栈、代码风格、常用命令、目录结构,甚至是你希望 AI 遵守的编码规范。它每次启动都会自动加载这个文件,相当于给 AI 做了一次项目培训。
我自己的模板长这样:
# 项目提示词 ## 技术栈 - 后端:Python 3.11,FastAPI - 前端:React 18,Vite ## 常用命令 - 运行测试:pytest tests/ - 启动开发服务:uvicorn app.main:app --reload ## 编码规范 - 类型标注必写 - 不使用全局变量 - 数据库操作统一走 SQLAlchemy session刚接触这个功能的时候我也觉得麻烦,但写完之后 Claude Code 给出的建议质量和代码风格确实有明显提升。
6.2 权限控制:把 AI 限制在当前目录内
在多用户机器上使用,或者只是单纯不想让 AI 乱动系统文件,可以开启权限限制模式。启动时加一个参数:
claude --permission-mode=aplan这个模式会对文件改动和命令执行先给出方案,等你确认后再动手,适合在涉及敏感文件的时候使用。默认的对话式确认适合日常开发,但如果你要睡觉前挂一个长任务跑,建议给足够的权限并提前审查任务内容。
6.3 更新到最新版本
Claude Code 的迭代速度不慢,官方也提供在终端里直接更新的命令:
claude update如果这个命令不可用,也可以通过 npm 手动更新:
npm update -g @anthropic-ai/claude-code我个人的习惯是每周更新一次,既能用上新功能,也能避免跨版本过大导致的配置不兼容。
6.4 用环境变量注入 API Key
个人开发或者自动化脚本场景里,你可能不想走交互式登录认证,而是直接用 API Key 方式接入。这样可以在系统环境变量里设置好密钥,让 Claude Code 启动时自动读取。这个方式在 CI/CD 流水线里尤其有用,不用人工干预凭证。具体环境变量名和文档建议以你部署时最新版本的信息为准,装完可以先用claude --help看一下当前的认证和相关配置选项。
写在最后的一些使用心得
装好只是第一步,真正让它变成生产力工具,关键还是要养成"把项目背景讲清楚、把任务拆细"的习惯。我现在每次让它做重构之前,都会先在对话里把约束条件说完整,比如"不要动公共接口签名""保持向后兼容""新增的代码必须带单元测试"。这样给出来的改动基本不用大调。另外,用它跑那些重复度高、模板化程度高的任务,比如批量加注释、统一日志格式、修 lint 报错,是真的省心;但涉及架构决策、数据迁移这类要综合考虑业务背景的事情,我还是习惯自己拿主意,让它负责把方案细节落地和查漏。如果这份记录能让你在 Ubuntu 上的安装和上手过程少绕一些弯,那就很值了。