Show GN: imgssh - SSH 안에서 로컬 클립보드 이미지를 붙여넣기
(github.com/coderredlab)안녕하세요.
요즘 원격 서버에 SSH로 붙어서 Claude Code나 Codex 같은 터미널 도구를 쓰는 일이 많아졌는데, 이미지 넣는 과정이 생각보다 번거롭더라고요.
로컬에는 이미 스크린샷이 클립보드에 있는데, 원격 서버 입장에서는 그걸 알 방법이 없어서 매번 파일로 저장하고 scp로 올리고 경로를 다시 붙여넣어야 했습니다.
그게 귀찮아서 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로 들어가 있으면 각 탭에서 누른 트리거는 해당 서버로만 업로드됩니다.
대신 nested SSH는 추적하지 않습니다. imgssh dev로 접속한 뒤 그 안에서 다시 ssh prod를 실행하면, 이미지는 여전히 dev 쪽으로 올라갑니다. 이건 일부러 범위를 좁혔습니다.
현재는 초기 버전이라 범위가 단순합니다.
- Linux에서 테스트
- OpenSSH 사용
- PNG 클립보드 이미지
- 기본 /tmp 업로드
- quoted path 삽입
- 업로드에는 별도 ssh 프로세스와 OpenSSH ControlPath를 사용
macOS는 코드상 pngpaste backend를 넣어두긴 했는데, 아직 직접 테스트는 못 했습니다.
비슷한 문제를 푸는 도구로 clipssh나 PasteHop도 있는데, imgssh는 one-shot 업로더나 터미널 통합 도구보다는 “ssh wrapper” 쪽에 가깝습니다.
아직 다듬을 부분이 많습니다. 특히 SSH 인자 처리, 터미널별 트리거 키, tmux/nvim 같은 환경에서의 UX는 더 테스트가 필요합니다.
써보시고 이상한 케이스나 더 나은 방식 있으면 의견 부탁드립니다.