SSHFS - 현재 유지되고 있는 SSHFS의 포크
(github.com/deadbeefsociety)- SSHFS는 SFTP를 사용해 원격 파일시스템을 마운트할 수 있게 하며, 대부분의 SSH 서버가 SFTP 접근을 기본 지원·활성화해 서버 쪽 작업 없이 사용 가능함
- deadbeefsociety/sshfs 유지보수 포크는 SSHFS가 더 이상 방치 상태가 아니어서 보관 처리되었으며, 사용 대상은 libfuse/sshfs임
- SSHFS는 주요 Linux 배포판에 포함되어 있고 여러 시스템에서 오랫동안 프로덕션 사용 이력이 있으나, 현재 정기적으로 활동하는 기여자가 없고 알려진 이슈는 bugtracker에 있음
- 현재 관리자는 pull request 적용과 정기 릴리스를 계속하지만, 고영향 이슈 처리 외 개발 여력은 없으며 pull request 없는 버그 보고나 치명적이지 않은 이슈는 응답을 받지 못할 가능성이 높음
- 기본 실행 형식은
sshfs [user@]hostname:[directory] mountpoint이며, 일반 사용자 실행이 권장되고 mountpoint는 해당 사용자가 소유해야 함- 사용자 이름을 생략하면 로컬 사용자 이름 사용
- 디렉터리를 생략하면 원격 홈 디렉터리 마운트
- 비밀번호가 필요하면 sshfs가 실행하는
ssh가 비밀번호 요청
-oport=PORT를 포함한 여러 ssh 옵션 지정이 가능하며, 마운트 해제는 Linux에서fusermount -u mountpoint, BSD와 macOS에서umount mountpoint사용- 빌드에는 libfuse 3.1.0 이상 또는 libfuse3 호환 인터페이스, 개발 헤더가 있는 Glib, Meson 0.38 이상, Ninja가 필요하며 테스트 실행에는
py.testPython 모듈 필요
댓글과 토론
Hacker News 의견들
-
사용자 영역에서 동작하는 걸 원하고 Emacs가 괜찮다면 TRAMP “Transparent Remote (file) Access, Multiple Protocol”이 있음: https://www.gnu.org/software/tramp/
MacBook Pro에서 서버 파일에 접근할 때 자주 씀- TRAMP에서 제일 좋은 점은 원격 시스템의 디렉터리로
cd한 뒤, 현재 작업 디렉터리에서 로컬 머신이나 다른 원격으로 파일을cp할 수 있고, 반대로 로컬에서 현재 원격 작업 디렉터리로도 복사할 수 있다는 것임
TRAMP를 쓰기 전에는 원격에 SSH 접속하고,cd와ls로 복사 위치를 찾고, SSH 세션을 끊은 다음scp나rsync로 파일을 옮기고, 대개 다시 SSH로 들어가야 했음 - 참고로 Emacs 기능 상당수, 어쩌면 대부분이나 전부가 Tramp와 투명하게 동작함.
dired,eshell,magit도 포함됨
- TRAMP에서 제일 좋은 점은 원격 시스템의 디렉터리로
-
흥미롭네. 항상 sshfs가 OpenSSH의 일부라고 생각했는데, 매일 새로 배우게 됨
Slackware에서 쓰는 sshfs도 방치된 상태로 보임: https://github.com/libfuse/sshfs
링크의 인용문을 보면 이 프로젝트가 그 “다음 주자”가 될지 궁금함If you would like to take over this project, you are welcome to do so. Please fork it and develop the fork for a while. Once there has been 6 months of reasonable activity, please contact Nikolaus@rath.org and I'll be happy to give you ownership of this repository or replace with a pointer to the fork.
Bluetooth에서 있었던 일처럼 RHEL 재조직 때문에 방치된 건지도 궁금함- OpenSSH 유지보수자들이 맡기에 잘 맞아 보임. 나도 이게 Linux의 핵심 SSH 인프라라고 생각했었음
-
참고로 Mac에서 수년간 macFUSE + sshfs를 쓰다가, 이제는 훌륭한 Mountain Duck 도구만 설치해서 씀. Finder와 마운트 지점으로 SFTP 엔드포인트에 접근할 수 있음
아주 좋은 소프트웨어고 내게는 필수품임- 최근 다시 rsync.net 고객이 됐는데, 문서를 훑어보다가 Mac 연동 권장 옵션으로 아직 Fuse/sshfs가 올라와 있어 좀 놀랐음: https://www.rsync.net/resources/howto/mac_sshfs.html
몇 달 전에는 이 때문에 ExpanDrive/StrongSync를 시도해봤고, Mountain Duck은 이번에 처음 들었음. Cyberduck은 좋아함. 이제 써볼 생각인데, 잘 동작하고 있다면 다른 사람들을 위해 저 페이지를 업데이트해주면 좋겠음. 그 외에는 만족하는 고객임 - 기록용으로 남기면, macOS에는 이제 https://www.fuse-t.org/가 있음. 커널 확장 없이 동작하고, 백그라운드에서 로컬 NFS 서버를 띄운 뒤 macOS가 거기에 연결하는 방식임
sshfs 구현도 https://github.com/macos-fuse-t/fuse-t/wiki#sample-filesyste...에 올라와 있음 - 나도 Mountain Duck을 주로 씀. 다만 VSCode에서는 Microsoft의 Remote SSH 확장이 VM이나 다른 원격 머신의 저장소 작업에 큰 도움이 됨
macOS에서 Libfuse/SSHFS는 몇 년 전부터 쓰기 꽤 부담스러워졌고, 그래서 나도 Mountain Duck으로 가게 됨
- 최근 다시 rsync.net 고객이 됐는데, 문서를 훑어보다가 Mac 연동 권장 옵션으로 아직 Fuse/sshfs가 올라와 있어 좀 놀랐음: https://www.rsync.net/resources/howto/mac_sshfs.html
-
sshfs가 더 이상 유지보수되지 않는다니 아쉽네. 학교에서 원격 계산 서버에 Vim 플러그인을 전부 설치하지 않고도, 내 수많은 Vim 플러그인으로 코드를 편집하려고 sshfs를 썼었음
생각보다 시스템이 아주 매끄럽게 동작해서 놀랐음 -
SFTP는 좋은데 저평가된 프로토콜이라고 생각함. 파일 트리를 한쪽에서 다른 쪽으로 복제하는 것보다 양방향으로 미러링하는 게 더 말이 되는 경우가 있음
SSHFS 코드를 포크하고 살펴본 뒤, 관련 자료와 개인적인 생각을 https://hackmd.io/@q/sftp-over-ws에 정리해 유지하고 있음- SFTP는 FTP보다 크게 개선됐지만, 서버 쪽에는 아직 실현되지 않은 잠재력이 많아서 더 나은 클라이언트만 만든다고 해결되지는 않음
OpenSSH와 GNU lsh 서버 모두 오래된 프로토콜 버전만 제공함. 아마 v2일 것임. 이 오래됨은 의도된 선택임: https://marc.info/?l=openssh-unix-dev&m=168488976013498&w=2
- SFTP는 FTP보다 크게 개선됐지만, 서버 쪽에는 아직 실현되지 않은 잠재력이 많아서 더 나은 클라이언트만 만든다고 해결되지는 않음
-
기술 조합은 조금 다르지만, 한동안 WireGuard 위의 NFS를 꽤 만족스럽게 쓰고 있음
- TCP 채널이 재설정됐을 때 NFS는 재연결을 더 우아하게 처리하는데, 이게 큰 장점임
파일시스템 기능도 더 많이 구현돼 있어서df보고서가 원격 파일시스템 사용량을 정확히 반영함
추가로 NFSv4는 “delegations”를 제공해 만료되는 임대 형태로 파일의 완전한 제어권을 클라이언트에 줄 수 있음. 최신 NFS 클라이언트에는 임대 기간을 암묵적으로 연장하는 “polite delegations”도 있음
SSHFS는 최소 설정으로 “빠르고 대충” 마운트하기에는 매우 편리함 - 나는 반대 방향으로 갔음. VPN 인프라는 매우 안정적이지만 저장소 방식으로 전환함
아주 단순한 DVFS 저장소 유틸리티로 파일을 동기화하고 나서는 돌아보지 않았음. 여기저기에 여러 복사본을 두는 걸 좋아함 - 몇 년 전에 sshfs에서 NFSv4 + WireGuard로 바꿨고, 아주 잘 동작함
- TCP 채널이 재설정됐을 때 NFS는 재연결을 더 우아하게 처리하는데, 이게 큰 장점임
-
지금은 sshfs 기능이 필요할 때 rclone mount를 주로 씀. 성능, 안정성, 캐시 옵션이 더 좋음
- 다만 rclone은 파일 전체를 전송하지 않고는 파일 중간에 쓸 수 없음. 그게 가장 큰 문제임
sshfs도 같은 제한이 있을 수는 있음
- 다만 rclone은 파일 전체를 전송하지 않고는 파일 중간에 쓸 수 없음. 그게 가장 큰 문제임
-
안타깝지만 이 포크는 그다지 활발해 보이지 않음. 마지막 커밋이 3월이고, PR과 이슈 활동도 거의 없음
여기에 기대를 걸지는 않겠음- 안정적인 프로젝트라면 어느 정도의 활동량을 기대하는 건가?
- “활발함”이란 자바스크립트식 정의로는 잘 돌아가는 걸 건드려서 망가뜨리는 것임
-
Nautilus, 즉 Ubuntu의 파일 탐색기는 SFTP 폴더 마운트를 지원함. 내부적으로는
gvfs를 쓰는 듯함
SFTP는 파일 전송에 SSH 연결을 쓰기 때문에, SSHFS와 비교해 UI 차이는 못 봤음- Nautilus GUI에서 SFTP 엔드포인트를 탐색할 수는 있는데, 동시에 터미널에서 쓸 수 있는 파일시스템 마운트 지점도 만들어주나?
잘 기억이 안 남
- Nautilus GUI에서 SFTP 엔드포인트를 탐색할 수는 있는데, 동시에 터미널에서 쓸 수 있는 파일시스템 마운트 지점도 만들어주나?
-
Mac OS X에서 macFUSE/osxfuse와 함께 rclone이나 sshfs를 써본 사람 있음?
- Macfuse로 내 모든 서버를 로컬 폴더처럼 붙여 쓰고 있음. 잘 동작함
서버마다 작은 스크립트가 있음. 예를 들어mount_fooserver.sh:
umount -f ~/mounts/fooserver
sshfs -o kill_on_unmount,reconnect,allow_other,defer_permissions,direct_io username@server:/ ~/mounts/fooserver -ovolname=foo - M1에서 macFUSE와 sshfs를 써서 사무실 Linux 박스의 드라이브를 마운트함. 대체로 괜찮지만 특유의 삐걱거림은 있음
설정 과정은 꽤 모험 같았고 몇 번은 이게 맞나 싶었지만, 밀고 나가니 잘 동작했음 - 위쪽의 내 최상위 댓글을 보면 됨. 답은 “Mountain Duck”임
- Monterey, M1에서 sshfs는 동작하지만, 다소 느린 편임
- Macfuse로 내 모든 서버를 로컬 폴더처럼 붙여 쓰고 있음. 잘 동작함