imgssh - Cole imagens da área de transferência local dentro do SSH
(github.com/coderredlab)Olá.
Ultimamente tenho acessado servidores remotos via SSH com mais frequência para usar ferramentas de terminal como Claude Code e Codex, e o processo de inserir imagens é mais trabalhoso do que parece.
Na máquina local, a captura de tela já está na área de transferência, mas do ponto de vista do servidor remoto não há como saber disso, então eu precisava salvar como arquivo toda vez, enviar com scp e colar o caminho de novo.
Como isso era incômodo, criei o imgssh.
GitHub:
https://github.com/coderredlab/imgssh
O uso é conectar com imgssh no lugar do ssh comum.
imgssh user@host
Nesse estado, quando houver uma imagem na área de transferência local e você pressionar Ctrl+], a imagem é enviada para o /tmp remoto e o caminho do arquivo é digitado na sessão SSH atual.
Por exemplo, algo assim.
'/tmp/imgssh-20260425-142744-a8f39c.png'
É um recurso criado para passar caminhos de arquivos de imagem para CLIs como Claude Code ou Codex.
No começo também pensei em uma abordagem com plugins específicos para cada terminal, mas há terminais como o Ghostty que não têm sistema de plugins, e adaptar separadamente para cada terminal também não parecia uma boa, então segui pelo caminho de envolver o próprio ssh.
A direção principal que defini foi esta.
- sem hook global de teclado
- sem daemon em segundo plano
- sem túnel reverso
- nada para instalar no servidor remoto
- funciona apenas dentro de sessões SSH abertas com
imgssh
Por isso, mesmo com várias abas abertas, cada processo do imgssh lida apenas com a própria sessão. Por exemplo, se em uma aba você estiver com imgssh dev e em outra com imgssh prod, o gatilho pressionado em cada aba fará upload apenas para o respectivo servidor.
Em compensação, SSH aninhado não é rastreado. Se você se conectar com imgssh dev e depois executar ssh prod dentro dessa sessão, a imagem ainda será enviada para o lado do dev. Isso foi uma limitação intencional de escopo.
No momento, como é uma versão inicial, o escopo é simples.
- testado no Linux
- usa OpenSSH
- imagens PNG da área de transferência
- upload padrão para
/tmp - inserção de caminho entre aspas
- para o upload, usa um processo
sshseparado e o OpenSSH ControlPath
No macOS, o backend pngpaste já está incluído no código, mas ainda não consegui testar diretamente.
Existem ferramentas como clipssh e PasteHop que resolvem problemas parecidos, mas o imgssh está mais próximo de um “wrapper de SSH” do que de um uploader one-shot ou uma ferramenta de integração com terminal.
Ainda há muita coisa para lapidar. Em especial, o tratamento de argumentos SSH, a tecla de gatilho por terminal e a UX em ambientes como tmux/nvim ainda precisam de mais testes.
Se puderem experimentar e compartilhar casos estranhos ou formas melhores de fazer isso, agradeço.
Ainda não há comentários.