imgssh - Dán ảnh từ clipboard cục bộ bên trong SSH
(github.com/coderredlab)Xin chào.
Dạo này tôi thường SSH vào máy chủ từ xa để dùng các công cụ terminal như Claude Code hay Codex, nhưng quy trình đưa ảnh vào lại phiền phức hơn tôi nghĩ.
Ở máy cục bộ thì ảnh chụp màn hình đã nằm sẵn trong clipboard, nhưng phía máy chủ từ xa không có cách nào biết được điều đó, nên mỗi lần tôi đều phải lưu thành file, tải lên bằng scp, rồi lại dán lại đường dẫn.
Thấy việc đó bất tiện nên tôi đã làm ra imgssh.
GitHub:
https://github.com/coderredlab/imgssh
Cách dùng là kết nối bằng imgssh thay cho ssh thông thường.
imgssh user@host
Trong trạng thái đó, khi clipboard cục bộ có ảnh và bạn nhấn Ctrl+], ảnh sẽ được tải lên thư mục /tmp trên máy từ xa và đường dẫn file sẽ được nhập vào ngay trong phiên SSH hiện tại.
Ví dụ sẽ như thế này.
'/tmp/imgssh-20260425-142744-a8f39c.png'
Tôi làm tính năng này để dùng khi cần truyền đường dẫn file ảnh cho các CLI như Claude Code hoặc Codex.
Ban đầu tôi cũng nghĩ đến cách làm plugin theo từng terminal, nhưng có những terminal như Ghostty không có hệ thống plugin, hơn nữa phải tùy chỉnh riêng cho từng terminal cũng không hay, nên cuối cùng tôi chọn hướng bọc chính ssh.
Đây là những định hướng quan trọng tôi đặt ra.
- Không hook bàn phím toàn cục
- Không có daemon chạy nền
- Không có reverse tunnel
- Không cần cài gì trên máy chủ từ xa
- Chỉ hoạt động bên trong phiên SSH được mở bằng imgssh
Vì vậy, dù mở nhiều tab thì mỗi tiến trình imgssh cũng chỉ xử lý phiên của riêng nó. Ví dụ nếu một tab đang vào imgssh dev, tab khác đang vào imgssh prod, thì trigger được nhấn ở mỗi tab sẽ chỉ tải lên đúng máy chủ tương ứng.
Tuy nhiên, nested SSH thì không được theo dõi. Nếu bạn kết nối bằng imgssh dev rồi từ bên trong đó lại chạy ssh prod, thì ảnh vẫn sẽ được tải lên phía dev. Đây là chủ ý để giới hạn phạm vi.
Hiện tại đây vẫn là phiên bản đầu, nên phạm vi còn khá đơn giản.
- Đã test trên Linux
- Dùng OpenSSH
- Ảnh clipboard PNG
- Mặc định tải lên
/tmp - Chèn quoted path
- Việc upload dùng tiến trình
sshriêng và OpenSSH ControlPath
Trên macOS thì tôi đã thêm backend pngpaste trong code, nhưng vẫn chưa trực tiếp kiểm thử.
Có những công cụ giải quyết vấn đề tương tự như clipssh hay PasteHop, nhưng imgssh gần với kiểu “ssh wrapper” hơn là công cụ uploader one-shot hay công cụ tích hợp terminal.
Vẫn còn nhiều chỗ cần hoàn thiện. Đặc biệt là xử lý đối số SSH, phím trigger theo từng terminal, và UX trong các môi trường như tmux/nvim vẫn cần được thử nghiệm thêm.
Nếu dùng thử và gặp trường hợp lạ hoặc có cách tốt hơn, rất mong nhận được góp ý.
Chưa có bình luận nào.