multipass ssh 老要输密码?让走 TaoToken 的 Codex 查 vscode 密钥配置
1. multipass vscode 远程开发为什么总在输密码如果你在 Windows 上用 multipass 起了一台 Ubuntu 虚拟机又习惯用 vscode 的 Remote - SSH 连进去写代码大概率遇到过这个场景每次点连接弹窗让你输密码输完进去过一会儿重连又让你输。明明本地已经用ssh-keygen -t rsa生成了密钥为什么 vscode 还是不走免密核心原因通常不在 vscode而在「公钥有没有真正落到 multipass 虚拟机里正确的 authorized_keys 文件、权限对不对」。multipass 默认创建的 Ubuntu 实例SSH 服务端配置里AuthorizedKeysFile往往指向.ssh/authorized_keys或.ssh/authorized_keys2而很多人手动scp上传时路径写错、文件名写错、权限给成 644 甚至 777sshd 会直接忽略这个文件于是回退到密码认证。这篇是排障视角不重装、不换工具就用你本机已有的id_rsa.pub配合走 TaoToken 的 Codex 帮你核对「本机密钥是否存在、上传目标路径对不对、authorized_keys2 权限是不是 600」查出来的问题你再在 multipass 终端里执行修复。TaoToken 在这里只做 Codex 的模型通道Key 在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建Base URL 配成https://taotoken.net/api不碰你的虚拟机也不替你改配置。适合谁Windows multipass vscode Remote-SSH 的开发者已经生成过密钥但免密失败的人不想每次连接都手打密码的人。2. 让 Codex 当排障助手TaoToken 前置准备思路很简单把「检查本机有没有 id_rsa.pub」「确认 scp 目标路径」「确认 authorized_keys2 权限」这三件事交给 Codex 按命令逐条核对你只负责在 multipass 终端里执行修复。Codex 需要一个模型通道这里用 TaoToken。先创建 Key打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册后在控制台里生成 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Key 管理页是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。Key 只在创建时完整显示一次复制好放本地环境变量里别写进代码仓库。然后把 Codex 的 Base URL 指向https://taotoken.net/api。注意这里不带任何查询参数就是纯 API 入口。模型名按你账号里可用的填配置方式一般是环境变量或配置文件下面给一份可复制的。注意TaoToken 在本文里只承担 Codex 的模型调用通道。它不会登录你的 multipass也不会自动改 sshd 配置。所有修复命令都由你在虚拟机终端里手动执行。如果你后面要长期用 Codex 做编码和 Agent 任务可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。只是临时排障用按量 Key 就够。3. 可复制配置Codex 接 TaoToken 并核对密钥链路3.1 配置 Codex 的 Base URL 与 Key以环境变量方式为例Windows PowerShell 里这样设当前会话有效$env:OPENAI_API_KEY你的TaoTokenKey $env:OPENAI_BASE_URLhttps://taotoken.net/api如果你用的是 Codex 的配置文件形式通常写在用户目录下的配置里核心就两项base_url指向https://taotoken.net/apiapi_key填你的 Key。不同版本字段名可能略有差异以你本地 Codex 文档为准但 Base URL 一定是https://taotoken.net/api。配好后先做一次最小验证确认通道是通的curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer $OPENAI_API_KEY能返回模型列表说明 Key 和 Base URL 没问题。如果这里就报 401先别往下查 SSH回到 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 确认 Key 是否复制完整、是否被禁用。3.2 让 Codex 按原文两条命令核对原文的免密逻辑就两步本机生成密钥然后把公钥传到虚拟机的authorized_keys2。让 Codex 帮你核对时把下面这段直接发给它我在 Windows 上用 multipass 跑 Ubuntuvscode Remote-SSH 每次都要输密码。 请帮我核对以下链路逐条给出检查命令和判断标准 1. 本机是否已存在 id_rsa.pub路径在哪内容是否是 ssh-rsa 开头 2. scp ./id_rsa.pub rootIP:/root/.ssh/authorized_keys2 这个目标路径是否正确 3. 虚拟机里 /root/.ssh/authorized_keys2 的权限是否为 600.ssh 目录是否为 700 4. sshd 的 AuthorizedKeysFile 配置是否包含 authorized_keys2。 只给命令和判断标准不要替我执行。Codex 会返回一组检查命令。你在 Windows 本机先查公钥Get-ChildItem $env:USERPROFILE\.ssh Get-Content $env:USERPROFILE\.ssh\id_rsa.pub如果id_rsa.pub不存在说明你只生成了私钥或生成到了别的目录重新执行ssh-keygen -t rsa并一路回车即可。如果存在记下完整路径scp 时用绝对路径更稳。3.3 上传公钥到 multipass 的正确姿势先拿到 multipass 实例 IPmultipass list假设 IP 是 172.19.2.6上传命令就是原文那条但建议用绝对路径scp $env:USERPROFILE\.ssh\id_rsa.pub root172.19.2.6:/root/.ssh/authorized_keys2这里有个高频坑multipass 默认用户不一定是 root。如果你平时用ubuntu用户登录目标应该是/home/ubuntu/.ssh/authorized_keys而不是/root/.ssh/authorized_keys2。传错用户目录sshd 自然找不到你的公钥。先确认你 vscode 里连的是哪个用户再决定目标路径。4. 验证请求与成功结果免密是否真的生效上传完别急着开 vscode先在 Windows 本机用 ssh 直接验证排除 vscode 缓存干扰ssh -i $env:USERPROFILE\.ssh\id_rsa root172.19.2.6如果还提示输密码加-v看详细日志ssh -v -i $env:USERPROFILE\.ssh\id_rsa root172.19.2.6日志里重点看两行Offering public key:后面跟的是不是你刚上传的那把Server accepts key:有没有出现。如果只看到 offering 没有 accepts基本就是服务端没读到或权限不对。进到 multipass 终端里核对权限ls -ld /root/.ssh ls -l /root/.ssh/authorized_keys2正确结果应该是.ssh目录700authorized_keys2文件600。如果不对执行chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys2 chown -R root:root /root/.ssh再确认 sshd 是否认这个文件名grep -i AuthorizedKeysFile /etc/ssh/sshd_config如果输出里只有.ssh/authorized_keys没有authorized_keys2那你的公钥放在authorized_keys2里就是白放。两个办法要么把公钥追加到authorized_keys要么在配置里加上authorized_keys2并重启 sshd。改配置后sudo systemctl restart ssh然后回到 Windows 再跑一次ssh -v看到Server accepts key且直接进 shell就说明免密通了。此时再打开 vscode Remote-SSH 连接不会再弹密码框。5. 本篇常见错排查错误一scp 报 No such file or directory。多半是目标目录.ssh不存在。先在 multipass 里mkdir -p /root/.ssh再传。错误二传上去了但 ssh -v 里没有 Offering public key。检查你 ssh 命令有没有带-i指定私钥或者 vscode 的 SSH 配置里IdentityFile是否指向了正确的私钥路径。vscode 的配置文件通常在C:\Users\你的用户名\.ssh\config。错误三权限 600 了还是不行。看父目录权限。.ssh是 700但/root或/home/ubuntu如果权限过松sshd 的 StrictModes 也会拒绝。用ls -ld /root确认必要时chmod 755 /root。错误四改了 authorized_keys 还是提示密码。确认你改的是当前登录用户的家目录不是 root 的。用whoami和echo $HOME确认。错误五Codex 返回的命令跑不通。先确认 Base URL 是https://taotoken.net/apiKey 有效。通道问题看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。想直接和模型对话验证通道用模型对话页https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。错误六vscode 连上了但文件夹没权限。这是原文提到的另一个点跟免密无关。用sudo chown -R 你的用户 /code处理别用 777。6. 排障之后把 Codex 通道固定下来免密通了之后vscode Remote-SSH 的体验会顺很多。如果你还想让 Codex 继续帮你查别的环境问题比如 emsdk 配置、shell 默认项、插件 reload 后的异常可以把 TaoToken 的 Key 和 Base URL 固定到本地环境变量或 Codex 配置里下次直接开问。接入相关的 Key 和文档入口放这里API Keys 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。长期做编码和 Agent 任务的话Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。最后留一个我踩过的坑multipass 实例重启后 IP 可能变vscode 的 config 里如果写死了旧 IP会连到别的机器或直接超时。用multipass list确认当前 IP或者给实例起个固定名字再连。免密本身没问题别把 IP 变了当成密钥失效。

相关新闻

BrewUI:给Homebrew套上友好图形界面,彻底告别命令行恐惧

BrewUI:给Homebrew套上友好图形界面,彻底告别命令行恐惧

1. 一个天天敲终端的人,为什么会去写一款GUI工具先说结论:我写BrewUI,不是因为我厌倦了命令行,而是因为太多人根本不该被命令行挡在门外。事情的开端挺朴素。有次帮朋友装开发环境,我看他打开终端复制粘贴Homebrew安装…

2026/10/15 3:37:32 阅读更多 →
Windows下Claude Desktop安装报错排查与CLI工具配置

Windows下Claude Desktop安装报错排查与CLI工具配置

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

2026/10/15 3:37:43 阅读更多 →
基于 React 的 Canvas 渲染缓存方案:@ice/cache-canvas 组件深入解析

基于 React 的 Canvas 渲染缓存方案:@ice/cache-canvas 组件深入解析

基于 React 的 Canvas 渲染缓存方案:ice/cache-canvas 组件深入解析 【免费下载链接】ice 🚀 ice.js: The Progressive App Framework Based On React(基于 React 的渐进式应用框架) 项目地址: https://gitcode.com/gh_mirrors/…

2026/10/16 19:26:13 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/10 2:03:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/9 14:01:10 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻