imgssh - วางภาพจากคลิปบอร์ดเครื่อง локัลภายใน SSH
(github.com/coderredlab)สวัสดีครับ
ช่วงนี้มีโอกาสต้องต่อเข้าเซิร์ฟเวอร์ระยะไกลผ่าน SSH เพื่อใช้เครื่องมือบนเทอร์มินัลอย่าง Claude Code หรือ Codex บ่อยขึ้น แต่ขั้นตอนการใส่ภาพกลับยุ่งยากกว่าที่คิดครับ
บนเครื่องโลคัลมีสกรีนช็อตอยู่ในคลิปบอร์ดแล้ว แต่ฝั่งเซิร์ฟเวอร์ระยะไกลไม่มีทางรู้ได้ จึงต้องบันทึกเป็นไฟล์ทุกครั้ง อัปโหลดขึ้นไปด้วย scp แล้วค่อยคัดลอกพาธมาแปะอีกที
เพราะมันน่ารำคาญ เลยลองทำ imgssh ขึ้นมาครับ
GitHub:
https://github.com/coderredlab/imgssh
วิธีใช้งานคือเชื่อมต่อด้วย imgssh แทน ssh ปกติ
imgssh user@host
ในสถานะนั้น ถ้ามีภาพอยู่ในคลิปบอร์ดของเครื่องโลคัลแล้วกด Ctrl+] ระบบจะอัปโหลดภาพไปยัง /tmp บนเครื่องรีโมต แล้วพิมพ์พาธไฟล์ลงใน SSH session ปัจจุบันให้โดยอัตโนมัติ
ตัวอย่างจะเป็นลักษณะนี้
'/tmp/imgssh-20260425-142744-a8f39c.png'
ฟีเจอร์นี้ทำมาเพื่อใช้ส่งพาธไฟล์ภาพให้กับ CLI อย่าง Claude Code หรือ Codex
ตอนแรกเคยคิดจะทำเป็นปลั๊กอินแยกตามเทอร์มินัล แต่มีเทอร์มินัลอย่าง Ghostty ที่ไม่มีระบบปลั๊กอินอยู่แล้ว และการต้องทำให้เข้ากับแต่ละเทอร์มินัลก็ไม่ค่อยน่าสนใจเท่าไร เลยเลือกแนวทางห่อ ssh ไว้อีกชั้นแทน
แนวทางสำคัญที่ตั้งไว้มีดังนี้
- ไม่มีการ hook คีย์บอร์ดทั้งระบบ
- ไม่มี background daemon
- ไม่มี reverse tunnel
- ไม่ต้องติดตั้งอะไรบนเซิร์ฟเวอร์ระยะไกล
- ทำงานเฉพาะภายใน SSH session ที่เปิดด้วย
imgsshเท่านั้น
ดังนั้นถึงจะเปิดหลายแท็บ แต่ละโปรเซสของ imgssh ก็จะจัดการเฉพาะ session ของตัวเอง เช่น ถ้าแท็บหนึ่งต่อด้วย imgssh dev และอีกแท็บต่อด้วย imgssh prod ทริกเกอร์ที่กดในแต่ละแท็บก็จะอัปโหลดไปยังเซิร์ฟเวอร์ของแท็บนั้นเท่านั้น
อย่างไรก็ตาม ระบบไม่ได้ติดตาม nested SSH ถ้าต่อเข้า imgssh dev แล้วจากในนั้นไปรัน ssh prod อีกครั้ง ภาพก็ยังจะถูกอัปโหลดไปฝั่ง dev เหมือนเดิม อันนี้เป็นการตั้งใจจำกัดขอบเขตไว้ครับ
ตอนนี้ยังเป็นเวอร์ชันแรก ขอบเขตจึงยังเรียบง่าย
- ทดสอบบน Linux
- ใช้ OpenSSH
- รองรับภาพในคลิปบอร์ดแบบ PNG
- อัปโหลดไปยัง
/tmpเป็นค่าเริ่มต้น - แทรกพาธแบบ quoted
- การอัปโหลดใช้โปรเซส
sshแยกต่างหากและใช้ OpenSSH ControlPath
ฝั่ง macOS มีใส่ backend สำหรับ pngpaste ไว้ในโค้ดแล้ว แต่ยังไม่ได้ทดสอบด้วยตัวเองครับ
เครื่องมือที่แก้ปัญหาใกล้เคียงกันก็มี clipssh หรือ PasteHop แต่ imgssh จะใกล้เคียงกับฝั่ง “ssh wrapper” มากกว่า one-shot uploader หรือเครื่องมือรวมเข้ากับเทอร์มินัล
ยังมีหลายจุดที่ต้องเกลาอีกมาก โดยเฉพาะการจัดการอาร์กิวเมนต์ของ SSH, ปุ่มทริกเกอร์ในแต่ละเทอร์มินัล, และ UX ในสภาพแวดล้อมอย่าง tmux/nvim ที่ยังต้องทดสอบเพิ่ม
ลองใช้กันดูได้ครับ ถ้าเจอเคสแปลก ๆ หรือมีวิธีที่ดีกว่านี้ก็ขอความคิดเห็นด้วยครับ
ยังไม่มีความคิดเห็น