解决 Claude Code 通过 SSH 无法粘贴图片:使用 Tabby 图片剪贴板插件

2356 字
12 分钟
解决 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]

直接执行全局安装也可能失败:

Terminal window
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 中执行:

Terminal window
Get-Process Tabby -ErrorAction SilentlyContinue |
Stop-Process -Force

第二步:进入 Tabby 插件目录#

在 Tabby 插件页面右上角点击 插件目录

Windows 默认目录通常是:

C:\Users\你的用户名\AppData\Roaming\tabby\plugins

也可以在 PowerShell 中直接进入:

Terminal window
Set-Location "$env:APPDATA\tabby\plugins"

第三步:清理安装失败的残留#

Terminal window
Remove-Item `
".\node_modules\tabby-ssh-image-clipboard" `
-Recurse -Force -ErrorAction SilentlyContinue

第四步:在插件目录中安装#

Terminal window
npm install tabby-ssh-image-[email protected] `
--legacy-peer-deps `
--ignore-scripts `
--no-audit `
--no-fund

这里没有使用 -g,因为插件需要安装到 Tabby 的用户插件目录。

两个关键参数的作用如下:

  • --legacy-peer-deps:避免 npm 自动安装 Tabby 已经内置的宿主依赖。
  • --ignore-scripts:跳过依赖中可能失败的 postinstall 脚本。

第五步:验证安装结果#

检查插件入口文件:

Terminal window
Test-Path `
".\node_modules\tabby-ssh-image-clipboard\dist\index.js"

正常应返回:

True

再查看插件目录:

Terminal window
Get-ChildItem `
".\node_modules\tabby-ssh-image-clipboard"

应当至少包含:

dist
package.json
README.md

也可以检查 npm 依赖树:

Terminal window
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#

例如:

Terminal window
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:

Terminal window
sftp macmini

连接成功后输入:

quit

如果 SFTP 本身无法建立,插件也无法上传图片。

提示 /tmp 没有权限#

在远端执行:

Terminal window
touch /tmp/tabby-image-test &&
rm /tmp/tabby-image-test

没有报错说明 /tmp 可写。

如果服务器对 /tmp 有特殊限制,需要修改插件的远端保存目录,或者为当前用户提供一个可写目录。

Tabby 仍然显示 [object Object]#

完全退出 Tabby,然后检查插件入口文件:

Terminal window
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\用户名\...

然后在远端检查文件:

Terminal window
file /tmp/clipboard_1785200000000.png

正常应显示:

PNG image data

确认文件存在后,再使用明确的文件引用:

@/tmp/clipboard_1785200000000.png

清理远端临时图片#

插件会把图片保存在远端 /tmp 目录中。多数系统会定期清理 /tmp,也可以手动删除:

Terminal window
rm -f /tmp/clipboard_*.png

只查看文件而不删除:

Terminal window
ls -lh /tmp/clipboard_*.png 2>/dev/null

不要在没有确认文件名的情况下执行范围过大的 /tmp 删除命令。

最终使用流程#

完成配置后,日常使用只需要三步:

  1. 在 Windows 中按 Win + Shift + S 截图。
  2. 回到 Tabby 中运行 Claude Code 的远程 SSH 标签页。
  3. 按下 Tabby 的粘贴快捷键,默认是 Ctrl + Shift + V

插件随后自动完成:

读取 Windows 图片剪贴板
→ 转换为 PNG
→ 通过当前 SSH 会话的 SFTP 上传
→ 保存到远端 /tmp
→ 把远端路径输入 Claude Code

这个方案不依赖 SSH 剪贴板转发,不需要在远端安装额外服务,也不需要手动使用 SCP。对于 Windows 本地使用 Tabby SSH 连接 Linux 或 macOS,并在远端运行 Claude Code 的场景,这是较为直接的一键图片粘贴方案。

参考#

解决 Claude Code 通过 SSH 无法粘贴图片:使用 Tabby 图片剪贴板插件
https://lunary.cc/posts/解决-claude-code-通过-ssh-无法粘贴图片使用-tabby-图片剪贴板插件/
作者
鹤望兰
发布于
2026-07-28
许可协议
CC BY-NC-SA 4.0