[Linux] SSHFS를 통한 외부 저장소 마운트

해인 · October 7, 2020

리눅스를 다루다 보면 특정 디렉토리를 다른 서버의 디렉토리와 연결하여 사용하고 싶을 때가 종종 발생한다. 예를 들면 서버 파일의 백업 혹은 외부 편집기를 통한 파일 수정 등.

마운트 하는 방법에는 여러 방법들이 있지만, 연결하고 싶은 컴퓨터에 SSH 가 열려있다면 SSHFS를 이용하여 간단히 마운트할 수 있다. SSHFS(Secure SHell FileSystem)는 SFTP로 파일을 전송하는 클라이언트다.

SSHFS 설치

SSHFS 는 각 시스템에서 지원하는 package manager로 간단하게 설치할 수 있으니, 자기 환경에 맞는 명령어를 통해 설치해주면 된다.

$ sudo apt-get install sshfs
$ sudo yum install sshfs
$ sudo dnf install sshfs

마운트할 경로 생성

보통 마운트 경로는 /mnt 밑에 생성하므로 다음과 같이 디렉토리를 생성 해준다.

$ sudo mkdir -p /mnt/backups 

SSHFS를 이용한 연결(mount)

$ sshfs [user@]hostname:[directory] mountpoint

$ # username이 user이고 ip 주소가 127.0.0.1인 
$ # 백업서버의 /home/user/backup 를 /mnt/backups 에 마운트 한다고 가정하면
$ sshfs user@127.0.0.1:/home/user/backup /mnt/backups

연결이 끊기면 재접속이 가능하도록 다음과 같이 설정해 줄 수 있다.

$ sshfs -o reconnect [user@]hostname:[directory] mountpoint

$ # SSH key 인증 방식을 쓴다면 인증 파일을 지정해 줄 수도 있다.
$ sshfs -o IdentityFile='KEY_PATH' [user@]hostname:[directory] mountpoint

Mount 확인

df 명령으로 마운팅된 경로와 해당 서버 디렉토리의 경로를 알 수 있다.

$ df -hT
Filesystem                          Type        Size  Used Avail Use% Mounted on
udev                                devtmpfs    730M     0  730M   0% /dev
tmpfs                               tmpfs       150M  4.9M  145M   4% /run
/dev/sda1                           ext4         31G  5.5G   24G  19% /
tmpfs                               tmpfs       749M  216K  748M   1% /dev/shm
tmpfs                               tmpfs       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                               tmpfs       749M     0  749M   0% /sys/fs/cgroup
tmpfs                               tmpfs       150M   44K  150M   1% /run/user/1000
**tecmint@192.168.0.102:/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint**

서버가 재시작되어도 항상 연결되어 있도록 하기 위해 다음 명령어를 통해 /etc/fstab을 수정해준다.

$ echo "sshfs#[user@]hostname:[directory] mountpoint
fuse.sshfs defaults 0 0" >> /etc/fstab

# 필요한 옵션을 추가해 줄 수도 있다.
sshfs#[user@]hostname:[directory] mountpoint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0
sshfs#[user@]hostname:[directory] mountpoint fuse.sshfs reconnect defaults 0 0

마운트 해제

연결을 끊고 싶으면 unmount 명령을 사용한다.

$ unmount /mnt/backups

만약 /etc/fstab 파일을 수정했다면 추가한 내용을 삭제해준다.

Reference

Written with StackEdit.

Twitter, Facebook