1 ポイント 投稿者 coderred 2026-04-25 | まだコメントはありません。 | WhatsAppで共有

こんにちは。

最近、リモートサーバーにSSHで接続してClaude CodeやCodexのようなターミナルツールを使うことが増えたのですが、画像を渡す手順が思ったより面倒でした。

ローカルではすでにスクリーンショットがクリップボードにあるのに、リモートサーバー側からはそれを知る手段がないため、毎回ファイルとして保存してsc​​pで送り、パスをまた貼り付け直す必要がありました。

それが面倒だったので、imgsshを作ってみました。

GitHub:
https://github.com/coderredlab/imgssh

使い方は、通常のsshの代わりにimgsshで接続する形です。

imgssh user@host  

その状態でローカルのクリップボードに画像があるときにCtrl+]を押すと、画像をリモートの/tmpにアップロードし、現在のSSHセッションにファイルパスを入力してくれます。

たとえば、こんな感じです。

'/tmp/imgssh-20260425-142744-a8f39c.png'  

Claude CodeやCodexのようなCLIに画像ファイルのパスを渡すために作った機能です。

最初はターミナルごとのプラグイン方式も考えましたが、Ghosttyのようにプラグインシステムがないターミナルもありますし、ターミナルごとに個別対応するのもいまひとつだったので、ssh自体をラップする方向にしました。

重要視した方針はこれです。

  • グローバルなキーボードフックなし
  • バックグラウンドデーモンなし
  • リバーストンネルなし
  • リモートサーバーにインストール不要
  • imgsshで開いたSSHセッション内でのみ動作

そのため、タブを複数開いても各imgsshプロセスが自分のセッションだけを処理します。たとえば、あるタブでimgssh dev、別のタブでimgssh prodに入っている場合、それぞれのタブで押したトリガーは対応するサーバーにだけアップロードされます。

その代わり、ネストしたSSHは追跡しません。imgssh devで接続したあと、その中でさらにssh prodを実行しても、画像は引き続きdev側にアップロードされます。これは意図的に範囲を絞っています。

現在は初期バージョンなので、対象範囲はシンプルです。

  • Linuxでテスト
  • OpenSSHを使用
  • PNGのクリップボード画像
  • デフォルトで/tmpへアップロード
  • クォート付きパスを挿入
  • アップロードには別のsshプロセスとOpenSSH ControlPathを使用

macOSについては、コード上ではpngpasteバックエンドを入れてありますが、まだ実機ではテストできていません。

似た問題を解くツールとしてclipsshやPasteHopもありますが、imgsshはone-shotアップローダーやターミナル統合ツールというより、「ssh wrapper」に近いです。

まだ磨くべき部分は多いです。特にSSH引数の処理、ターミナルごとのトリガーキー、tmux/nvimのような環境でのUXは、さらにテストが必要です。

試してみて、変わったケースやもっと良いやり方があれば意見をいただけると嬉しいです。

まだコメントはありません。

まだコメントはありません。