System/Linux

linux - sshfs

linuxism 2014. 8. 25. 13:36


Settupg Up SSHFS on CentOS is fairly easy to do and it enables you to mount partitions using accounts that already on the system.

It’s recommended to use ssh keys when mounting partitions with sshfs, if you have not already done so, follow this tutorial on setting up ssh keys.

Installing SSHFS on CentOS
First you have to have the EPEL repo installed, if you already have it installed, skip this command.

Now we can install sshfs with the following:

yum -y install sshfs

You will see sshfs and the fuse kernel module and libraries downloaded and installed.

Load the fuse kernel module used by sshfs

modprobe fuse

Verify fuse module loaded properly

lsmod | grep fuse

You should see something like

fuse                   56800  0

Make a mount point directory where we’ll access the remote filesystem.

mkdir /sshfsmount

Mount the remote partition (on host puppet.example.motorrobot.net in this example).
This will mount root’s home directory on puppet.example.motorrobot.net on the /sshfsmount folder we created before

sshfs root@puppet.example.motorrobot.net: /sshfsmount

Use the mounted partition like any other mount on your system

ls -aul /sshfsmount

Unmount an SSHFS partition

umount /sshfsmount

Keep a volume mounted with autossh
sshfs -o reconnect,compression=yes,transform_symlinks,ServerAliveInterval=60,ServerAliveCountMax=2,ssh_command=’autossh -M 0′ username@server:/ /sshfsmount”



source - http://centoshowtos.org/storage/sshfs/





 

제  목 : sshfs로 원격 파일시스템을 마운트해서 사용하기
작성자 : 좋은진호(truefeel)
작성일 : 2007.5.19(토)

1. sshfs와 FUSE 개요

얼마전에 'Redhat Enterprise Linux securely mount remote Linux / UNIX directory or file system using SSHFS (http://www.cyberciti.biz/tips/rhel-centos-mounting-remote-filesystem-using-sshfs.html )' 제목의 글을 봤다.
예전에도 sshfs에 대한 글들은 봤으나 사용은 해보지 않다가 scp로 파일 복사를 자주 해야했던 최근 일을 떠올렸다. 좀 더 편하고 나은 방법이 있는데, 굳이 돌아갈 필요가 뭐가 있겠는가. 일상적인 사용을 위해 하나씩 살펴보았다.

ssh를 통해 원격지 파일시스템을 로컬에 마운트하는 sshfs를 사용하기 위해서는 먼저 FUSE가 필요하다.
FUSE(Filesystem in Userspace)은 커널이 아닌 유저공간에서 구현할 수 있는 파일시스템으로 Linux, FreeBSD, Max OSX(MaxFUSE라고 부릅니다.)에서 사용할 수 있다. 이들 OS에서는 FUSE 기반의 다양한 파일시스템을 맛 볼 수 있다.

- 지금 소개하는 sshfs를 비롯하여,
- 리눅스에서 NTFS파일시스템을 사용하기 위한 ntfsmount,
- 리눅스에서 NTFS파일시스템을 읽고 쓸수 있는 Captive NTFS,
  ( Captive NTFS에 대해서는 2003년 11월에 '리눅스에서 NTFS 파일시스템 읽고 쓰기' ( http://coffeenix.net/board_view.php?bd_code=120 )란 제목의 글을 써둔게 있으니 참고하기 바란다. )
- NTFS파일시스템을 읽고 쓰는 또다른 드라이버인 NTFS-3G,
- BitTorrent 의 파일형식인 .torrent 를 파일시스템으로 마운트하는 BitTorrent File System,
- 오픈솔라리스의 ZFS 파일시스템을 리눅스에서 사용하기 위한 ZFS on FUSE, ( 'Google Summer of Code 2006'의 결과물 중 하나 )
- Gmail을 파일시스템처럼 사용하는 GmailFS

등 FUSE로 인해 파일시스템의 확장은 벽이 없어졌다.
FUSE는 현재 리눅서 커널 2.6.14 이상에 공식적으로 포함되어 있지만, 리눅스 2.6.14이상을 쓰지 않아도 된다. 커널에 포함이 안되어 있을 뿐 FUSE 받아서 설치하면 되니깐.

2. FUSE와 sshfs 설치

FUSE와 sshfs 설치는 너무 쉬우니 간단히 설명한다.

http://fuse.sourceforge.net/ 에서 FUSE 소스를 받는다.
리눅스 커널 2.6.9 이상인 경우는 FUSE 2.6.X 버전을 받고, 커널 2.6.9보다 낮고 2.4.21보다 높으면 FUSE 2.5.x 버전을 받으면 된다.

 
./configure
make
make install
 


그리고, /etc/ld.so.conf 에 /usr/local/lib 를 넣고 ldconfig 명령을 내려준다.

sshfs를 설치해보자. sshfs 홈( http://fuse.sourceforge.net/sshfs.html )에서 소스를 받는다.

 
./configure
make
make install
 


3. sshfs로 마운트하기

sshfs 명령 사용은 간단하다. ssh와 scp 명령과 비슷하다. 다음 명령을 보면 접속할 서버명과 마운트할 포인트만 지정해주면 끝난다.

 
sshfs truefeel@coffeenix: /home/truefeel/mount/master/
Password:
 


df명령과 mount 명령으로 확인해보자. 마운트가 정상적으로 됐음을 확인할 수 있으나 용량 표시는 정상적으로 표시되지 않았다.

 
df -h
Filesystem            Size  Used Avail Use% Mounted on
... 생략 ...
sshfs#master:        1000G     0 1000G   0% /home/truefeel/mount/master
mount
... 생략 ...
sshfs#master: on /home/truefeel/mount/master type fuse (rw,nosuid,nodev,large_read,max_read=65536,user=truefeel)
 


sshfs를 할 때 원격지 ssh서버의 UID와 GID가 로컬 사용자가 다를 경우 액세스가 안되는 경우도 있는데, 이 때는 -o allow_other (NFS에서 /etc/exports파일의 all_squash 옵션으로 보면 됨)이나 -o uid=UID, -o gid=GID 옵션으로 해결 할 수 있다.

sshfs 명령 실행중에 발생할 수 있는 2가지 에러에 대해 살펴보자.

1) sshfs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory
   libfuse.so.2 공유 라이브러리를 찾지 못해서 발생한 것이다. '2. FUSE와 sshfs 설치'중에 /etc/ld.so.conf 설정과 ldconfig 명령으로 해결할 수 있다.

2) fusermount: fuse device not found, try 'modprobe fuse' first
   fuse 커널 모듈이 로딩되지 않았다. modprobe fuse 명령을 실행한다.

이제 사용 완료했으면 unmount를 해보자. unmount는 fusermount 명령 또는 umount 명령으로 할 수 있다.

 
fusermount -u /home/truefeel/mount/master/
 


4. 참고 자료

* Redhat Enterprise Linux securely mount remote Linux / UNIX directory or file system using SSHFS
  http://www.cyberciti.biz/tips/rhel-centos-mounting-remote-filesystem-using-sshfs.html
* How to mount a remote ssh filesystem using sshfs
  http://ubuntu.wordpress.com/2005/10/28/how-to-mount-a-remote-ssh-filesystem-using-sshfs/

* Filesystem in Userspace
  http://fuse.sourceforge.net/
* PYRASIS가 보는 Winter of Code 2006
  http://www.pyrasis.com/main/Blog/CodeAndSoftware/2006-12



출처 - http://coffeenix.net/board_view.php?bd_code=1491