개요
SSHFS는 SSH File Transfer Protocol(SFTP)을 통해 원격 파일시스템을 로컬에 마운트해 마치 로컬 디스크처럼 접근할 수 있게 하는 FUSE 기반 파일시스템입니다. 정의: FUSE는 사용자 공간에서 파일시스템을 구현할 수 있게 해주는 커널 인터페이스입니다.
중요: SSHFS는 SSH 인증과 암호화에 의존하므로 SSH 접근 제어와 키 관리를 올바르게 설정해야 합니다.
설치: yum으로 SSHFS 설치
다음 명령으로 CentOS 등에서 SSHFS 패키지를 설치할 수 있습니다:
yum install fuse-sshfs
설치가 완료되면 “원격 폴더 마운트” 섹션으로 진행하세요.
설치: 소스에서 SSHFS 컴파일
최신 버전이 필요하거나 패키지에 없는 기능을 원하면 소스에서 빌드할 수 있습니다. 예제는 공식 GitHub 릴리스에서 sshfs-2.8을 다운로드하는 방법입니다.
cd /tmp
wget https://github.com/libfuse/sshfs/releases/download/sshfs_2.8/sshfs-2.8.tar.gz
압축을 풀고 빌드합니다:
tar xvf sshfs-2.8.tar.gz
디렉터리로 이동한 뒤 구성 및 컴파일:
./configure
make && make install
빌드가 문제 없이 끝나면 SSHFS를 바로 사용할 수 있습니다.
기본 사용법: 원격 폴더 마운트하기
로컬에 마운트할 디렉터리를 만듭니다(예: /var/mnt):
mkdir /var/mnt
원격 서버 IP가 192.168.0.10이고 사용자 계정이 user인 경우, 다음처럼 마운트합니다:
sshfs [email protected]:/ /var/mnt/
마운트 후 /var/mnt로 이동하면 원격 루트(또는 지정한 원격 경로)를 로컬처럼 사용할 수 있습니다. 마운트가 성공했는지 확인하려면 mount나 ls 명령으로 확인하세요.
참고: 기본 동작은 현재 세션/시스템이 재부팅될 때까지 유효한 임시 마운트입니다.
영구 마운트(재부팅 후에도 유지)
임시 마운트 대신 재부팅 후에도 유지하려면 두 가지 방법이 있습니다.
/etc/fstab에 항목 추가(권장하지 않을 수도 있음 — 네트워크 및 인증 문제 주의):
- 예시 fstab 항목(키 기반 인증과 비밀번호 없는 접속을 전제로 함)은 다음과 같습니다:
/etc/fstab의 한 줄(예시):
[email protected]:/ /var/mnt fuse.sshfs defaults,_netdev,allow_other,IdentityFile=/root/.ssh/id_rsa 0 0
- _netdev 옵션은 네트워크가 준비되기 전에 마운트를 시도하지 않게 합니다.
부팅 스크립트에 sshfs 명령 추가(/etc/rc.local 등):
- rc.local 방식은 서비스 의존성 제어가 어렵고 systemd가 있는 환경에서는 권장되지 않습니다.
systemd 환경에서는 systemd 서비스 유닛을 만들어 네트워크가 올라온 뒤 마운트하도록 구성하는 것이 가장 안정적입니다.
언마운트(마운트 해제)
로컬에서 마운트된 디렉터리를 해제하려면 umount(또는 fusermount -u) 명령을 사용합니다:
umount /var/tmp
또는 FUSE 전용 해제:
fusermount -u /var/mnt
보안 팁 및 하드닝(중요)
- SSH 키 기반 인증을 사용하고 비밀번호 인증은 비활성화하세요.
- 가능한 한 접속 계정의 권한을 제한하세요(chroot나 제한된 셸 고려).
- fstab에 쓰는 경우 IdentityFile 경로의 퍼미션을 엄격히 관리하세요(600).
- allow_other 옵션은 신중히 사용하세요 — 로컬의 다른 사용자가 마운트된 파일을 접근할 수 있습니다.
- 방화벽에서 SSH 포트(기본 22)를 제한하고 필요시 포트 포워딩이나 Jump Host를 사용하세요.
중요: 암호를 평문으로 /etc/fstab에 저장하지 마세요.
문제 해결 요령
- 마운트 실패 시: SSH로 원격 서버 접속이 가능한지 확인(ssh [email protected])
- 권한 오류: 원격 경로의 권한 및 로컬 마운트 포인트의 소유권 확인
- 재부팅 후 안될 때: systemd 네트워크 의존성 또는 fstab 옵션(_netdev) 확인
- 느린 파일작업: 네트워크 지연 및 서버 디스크 I/O를 점검
테스트 케이스 / 수용 기준
- 기본 연결: 로컬에서 ls /var/mnt가 원격 파일 목록을 표시한다.
- 쓰기 권한 테스트: 원격에 파일 생성 및 삭제가 가능하다(계정 권한에 따름).
- 재부팅 유지(영구 마운트 시): 시스템 재시작 후에도 자동으로 마운트되어야 한다.
- 오류 복구: 네트워크 단절 후 재연결 시 정상적으로 다시 마운트되거나 적절한 로그가 남아야 한다.
운영 전 체크리스트(역할별)
관리자:
- SSH 키와 권한 정책 검토
- 방화벽 및 포트 제한 적용
데브옵스:
- systemd 유닛이나 fstab 테스트
- 모니터링/로그 수집 설정
사용자:
- 마운트 포인트 사용 권한 확인
- 파일 동기화 주기 및 백업 정책 확인
대안과 언제 SSHFS를 피해야 하는가
대안:
- NFS: 로컬 네트워크에서 성능과 POSIX 권한을 중시할 때
- Samba(CIFS): 윈도우와 파일 공유가 필요할 때
- rsync: 일괄 전송이나 백업이 목적일 때
SSHFS가 적합하지 않은 경우:
- 고성능 동시 작업이 많은 파일서버 용도
- 복잡한 권한/락 요구 사항이 있는 환경
명령 치트시트
- 설치(yum):
yum install fuse-sshfs
- 마운트 예시:
sshfs [email protected]:/remote/path /local/mountpoint
- 언마운트 예시:
fusermount -u /local/mountpoint
- fstab 예시:
[email protected]:/ /var/mnt fuse.sshfs defaults,_netdev,allow_other,IdentityFile=/root/.ssh/id_rsa 0 0
간단한 유지관리 및 모니터링 팁
- 정기적으로 마운트 상태(mount 명령)와 로그(/var/log/messages 또는 systemd journal)를 확인하세요.
- 네트워크 지연이 자주 발생하면 캐시 전략이나 다른 파일 전송 방식을 고려하세요.
요약
SSHFS는 설정이 간단하고 SSH의 보안성을 그대로 이용할 수 있어 소규모 파일 공유나 원격 작업에 매우 유용합니다. 대규모 파일서버나 높은 동시성, 복잡한 권한 관리가 필요한 경우 NFS나 다른 솔루션이 더 적합할 수 있습니다. 보안 설정(키 기반 인증, 권한 최소화)과 부팅 시 자동 마운트 방식을 신중히 구성하면 실무에서 안정적으로 사용할 수 있습니다.
요약된 핵심: 설치(패키지/소스) → 마운트 → 필요시 영구마운트 → 보안/모니터링 확인
중요: 항상 테스트 환경에서 먼저 시도하고 운영 환경에 적용하세요.