解决 Claude Code 通过 SSH 无法粘贴图片:使用 Tabby 图片剪贴板插件
问题现象
在 Windows 上使用 Tabby SSH 连接远程 Linux 或 macOS,并在远端运行 Claude Code 时,经常会遇到以下问题:
- Windows 已经复制了截图,但在 Claude Code 中粘贴时提示没有图片。
- 粘贴后只出现
C:\Users\...这样的 Windows 本地路径。 - 远端机器无法访问 Windows 本地路径,Claude Code 因此无法读取图片。
这不是图片本身有问题,而是因为 Claude Code 实际运行在远端机器上。普通 SSH 不会自动把 Windows 图片剪贴板转换成远端文件,Claude Code 的相关 Issue 中也有不少 Windows、WSL 和 Remote-SSH 用户反馈类似问题。
Tabby 用户可以通过第三方插件 tabby-ssh-image-clipboard 解决这个问题。插件会读取 Windows 剪贴板中的图片,通过当前 Tabby SSH 会话的 SFTP 上传到远端,再把远端图片路径输入 Claude Code。
工作原理
插件的完整处理流程如下:
Windows 图片剪贴板 ↓Tabby 插件读取图片并转换为 PNG ↓通过当前 SSH 会话的 SFTP 上传 ↓保存到远端 /tmp 目录 ↓将远端图片路径输入 Claude Code上传成功后,Claude Code 输入框中会出现类似下面的路径:
"/tmp/clipboard_1785200000000.png"这个路径位于远端服务器,而不是 Windows 本机,因此远端运行的 Claude Code 可以直接读取。
粘贴快捷键的工作方式
插件监听的是 Tabby 的 paste 粘贴动作,并没有单独固定一个插件快捷键。
Tabby 在 Windows 上默认使用:
Ctrl + Shift + V作为粘贴快捷键。因此在默认配置下,按下 Ctrl + Shift + V 就会触发插件;如果已经修改过 Tabby 的粘贴快捷键,应使用修改后的快捷键。
插件触发后会先检查剪贴板:
- 剪贴板中有图片:上传图片并输入远端路径。
- 剪贴板中没有图片:交还给 Tabby 执行普通文本粘贴。
关键前提插件只能取得由 Tabby 自己建立的 SSH 会话。当前活动标签必须是 Tabby 内置 SSH 标签页,并且远端需要支持 SFTP。
使用条件
开始前需要满足以下条件:
- Windows 上已经安装 Tabby 1.0.x 或更高版本。
- 使用 Tabby 内置 SSH 配置连接远端。
- 远端 SSH 服务支持 SFTP。
- 远端
/tmp目录可写。 - Claude Code 运行在当前 Tabby SSH 标签页中。
远端可以是 Linux,也可以是 macOS。插件只使用 SSH/SFTP 上传图片,远端不需要额外安装剪贴板服务。
必须使用 Tabby 内置 SSH 会话
下面这种连接方式不适用于该插件:
Tabby 本地 PowerShell ↓手动执行 ssh user@server ↓进入远端这种标签页在 Tabby 看来仍然是本地终端,插件无法取得 Tabby 内置 SSH 会话的 SFTP 对象。
应当在 Tabby 中直接创建并打开 SSH 配置:
Tabby→ 配置和连接→ 新建 SSH 配置→ 连接远端通过插件管理器安装
打开 Tabby,进入:
设置 → 插件搜索:
tabby-ssh-image-clipboard点击安装,然后彻底退出并重新启动 Tabby。
重启后进入:
设置 → 插件 → Clipboard Sync确认以下选项已经启用:
Enabled:开启Show Notifications:开启Tabby 官方支持通过设置页面安装插件,这也是该插件 README 推荐的安装方式。
插件管理器报错时手动安装
部分 Tabby 或 npm 环境中,在线安装可能只显示:
ssh-image-clipboard 中的错误:[object Object]直接执行全局安装也可能失败:
npm install -g tabby-ssh-image-clipboard常见错误包括:
run-script-os was unable to execute the script 'postinstall'或者错误位置指向:
node_modules\tabby-ssh这是因为插件依赖 Tabby 提供的宿主模块。npm 独立安装时可能尝试额外安装 tabby-ssh 等 peer dependencies,最终在安装脚本阶段失败。
WARNING不要把插件安装到普通 npm 全局模块目录。手动安装时应进入 Tabby 的用户插件目录。
第一步:完全退出 Tabby
先退出 Tabby 主窗口和系统托盘,然后在 PowerShell 中执行:
Get-Process Tabby -ErrorAction SilentlyContinue | Stop-Process -Force第二步:进入 Tabby 插件目录
在 Tabby 插件页面右上角点击 插件目录。
Windows 默认目录通常是:
C:\Users\你的用户名\AppData\Roaming\tabby\plugins也可以在 PowerShell 中直接进入:
Set-Location "$env:APPDATA\tabby\plugins"第三步:清理安装失败的残留
Remove-Item ` ".\node_modules\tabby-ssh-image-clipboard" ` -Recurse -Force -ErrorAction SilentlyContinue第四步:在插件目录中安装
--legacy-peer-deps ` --ignore-scripts ` --no-audit ` --no-fund这里没有使用 -g,因为插件需要安装到 Tabby 的用户插件目录。
两个关键参数的作用如下:
--legacy-peer-deps:避免 npm 自动安装 Tabby 已经内置的宿主依赖。--ignore-scripts:跳过依赖中可能失败的postinstall脚本。
第五步:验证安装结果
检查插件入口文件:
Test-Path ` ".\node_modules\tabby-ssh-image-clipboard\dist\index.js"正常应返回:
True再查看插件目录:
Get-ChildItem ` ".\node_modules\tabby-ssh-image-clipboard"应当至少包含:
distpackage.jsonREADME.md也可以检查 npm 依赖树:
npm ls tabby-ssh-image-clipboard --depth=0本文使用的版本应显示为:
插件发布包已经包含构建完成的 dist/index.js,因此使用 --ignore-scripts 安装后仍可被 Tabby 加载。安装完成后重新启动 Tabby。
在 Claude Code 中粘贴图片
第一步:使用 Tabby 建立 SSH 会话
打开已经保存的 Tabby SSH 配置并连接远端机器。
不要先打开本地 PowerShell,再手动运行 ssh。
第二步:启动 Claude Code
例如:
cd "/Users/arrog1nt/code/koishi 插件"claude第三步:在 Windows 上截图
使用 Windows 截图快捷键:
Win + Shift + S也可以从浏览器或图片软件中复制真实图片。
第四步:触发 Tabby 粘贴
点击 Claude Code 输入框,按下 Tabby 当前配置的粘贴快捷键。
Tabby 在 Windows 上的默认粘贴快捷键是:
Ctrl + Shift + V插件会把图片上传到远端:
/tmp/clipboard_1785200000000.png随后自动向 Claude Code 输入:
"/tmp/clipboard_1785200000000.png"继续输入问题并提交即可,例如:
请分析这张图片中的报错:"/tmp/clipboard_1785200000000.png"如果当前版本的 Claude Code 没有自动读取普通路径,可以改用明确的文件引用:
@/tmp/clipboard_1785200000000.png例如:
分析这个界面的问题:@/tmp/clipboard_1785200000000.png插件的标准行为是将图片保存为 /tmp/clipboard_<时间戳>.png,再把带引号的远端路径写入当前终端。
常见问题
按粘贴快捷键没有反应
先确认剪贴板中确实是图片。推荐使用 Win + Shift + S 重新截图后立即测试。
如果剪贴板中只有文字,插件会放弃图片上传,并让 Tabby 继续执行普通文本粘贴,这是正常行为。
还应检查:
- 当前焦点是否位于 Claude Code 输入框。
- 使用的是否是 Tabby 当前配置的粘贴快捷键。
- 当前标签是否为 Tabby 内置 SSH 会话。
- SSH 是否已经完成连接。
- 插件的
Enabled是否开启。 - 安装后是否已经彻底重启 Tabby。
提示找不到 SSH 会话
通常是因为使用了:
本地 PowerShell → 手动 ssh请改用 Tabby 中保存的 SSH 配置直接连接远端。
提示 SFTP 错误
可以在 Windows PowerShell 中测试当前 SSH 配置是否支持 SFTP:
sftp macmini连接成功后输入:
quit如果 SFTP 本身无法建立,插件也无法上传图片。
提示 /tmp 没有权限
在远端执行:
touch /tmp/tabby-image-test &&rm /tmp/tabby-image-test没有报错说明 /tmp 可写。
如果服务器对 /tmp 有特殊限制,需要修改插件的远端保存目录,或者为当前用户提供一个可写目录。
Tabby 仍然显示 [object Object]
完全退出 Tabby,然后检查插件入口文件:
Test-Path ` "$env:APPDATA\tabby\plugins\node_modules\tabby-ssh-image-clipboard\dist\index.js"返回 True 后重新启动 Tabby。
如果仍然报错,可以按 Ctrl + Shift + I 打开 Tabby 开发者工具,在 Console 中搜索:
ssh-image-clipboard这样可以查看具体异常,而不是插件页面中被简化成 [object Object] 的错误。
图片路径出现了,但 Claude Code 没有识别
先确认输入的是远端路径:
/tmp/clipboard_1785200000000.png而不是 Windows 本地路径:
C:\Users\用户名\...然后在远端检查文件:
file /tmp/clipboard_1785200000000.png正常应显示:
PNG image data确认文件存在后,再使用明确的文件引用:
@/tmp/clipboard_1785200000000.png清理远端临时图片
插件会把图片保存在远端 /tmp 目录中。多数系统会定期清理 /tmp,也可以手动删除:
rm -f /tmp/clipboard_*.png只查看文件而不删除:
ls -lh /tmp/clipboard_*.png 2>/dev/null不要在没有确认文件名的情况下执行范围过大的 /tmp 删除命令。
最终使用流程
完成配置后,日常使用只需要三步:
- 在 Windows 中按
Win + Shift + S截图。 - 回到 Tabby 中运行 Claude Code 的远程 SSH 标签页。
- 按下 Tabby 的粘贴快捷键,默认是
Ctrl + Shift + V。
插件随后自动完成:
读取 Windows 图片剪贴板→ 转换为 PNG→ 通过当前 SSH 会话的 SFTP 上传→ 保存到远端 /tmp→ 把远端路径输入 Claude Code这个方案不依赖 SSH 剪贴板转发,不需要在远端安装额外服务,也不需要手动使用 SCP。对于 Windows 本地使用 Tabby SSH 连接 Linux 或 macOS,并在远端运行 Claude Code 的场景,这是较为直接的一键图片粘贴方案。