Sshfs를 이용한 웹계정 마운트

제 블로그에 포스팅하고서 여기에도 옮깁니다. 기존에 작성했던 것 중에서도 괜찮은 것을 선정해서 옮기고 싶은데… 매일매일이 영어와의 전쟁이라 시간이 영안나네요;;ㅎ html코드를 그대로 옮길 수 있다면 조금 편하게 옮길텐데…ㅎ

[size=150:1ehsufi9][b:1ehsufi9]SSHFS을 이용한 웹계정 마운트[/b:1ehsufi9][/size:1ehsufi9]
[color=#FF0000:1ehsufi9]사용환경[/color:1ehsufi9]
[list:1ehsufi9][b:1ehsufi9]로컬환경[/b:1ehsufi9]
[:1ehsufi9]운영체제 : 우분투 9.10 (Ubuntu 9.10 Karmic Koala)[/:m:1ehsufi9]
[:1ehsufi9]버전정보 : 2.6.31-17-generic i686 GNU/Linux[/:m:1ehsufi9]
[:1ehsufi9]관련패키지 : sshfs, FUSE library, fusemount[/:m:1ehsufi9][/list:u:1ehsufi9]
[list:1ehsufi9][b:1ehsufi9]원격지환경[/b:1ehsufi9]
[:1ehsufi9]웹호스팅 : 미리내(http://www.mireene.com/)[/:m:1ehsufi9]
[:1ehsufi9]서비스 종류 : 리눅스 기가호스팅(1.5G형)[/:m:1ehsufi9][/list:u:1ehsufi9]

[i:1ehsufi9][size=200:1ehsufi9]01. 시작하기 전에[/size:1ehsufi9][/i:1ehsufi9]
sshfs를 이용해서 웹계정을 마치 로컬의 특정 디렉토리를 사용하는 것과 같이 사용하는 방식입니다. 저의 경우에는 주로 스크린샷 업로드와 톰보이 동기화용으로 사용 중입니다.

포스트 상단에 사용환경을 적어둔 이유는 로컬환경이나 원격지환경에 따라서 설정법이 약간씩 차이가 있을 수 있기에 명시해둔 것입니다.

만약에 잘 안되어 trouble shooting을 하실 경우에는 포스트 하단에 있는 참고문서들을 참고하셔서 본인의 환경에 맞도록 설정을 조정해주시면 어렵지 않게 사용할 수 있을 것입니다.

각 문서에 포함되어 있는 내용 중에서 FUSE설정과 관련된 부분이라면 현재 사용하고 있는 리눅스 커널에 따라서 필요가 없는 경우가 있습니다. 커피닉스 문서([url:1ehsufi9]http://coffeenix.net/board_view.php?bd_code=1491[/url:1ehsufi9])에 따르면, 리눅스 커널 2.6.14 이상에서 공식적으로 포함되어 있으므로 그 이상의 버전을 사용하고 있는 리눅스 환경이라면 sshfs만 설치하시면 됩니다.

본 포스트에 sshfs 외의 다른 기술들은 따로 설명하지 않고 관련 기술을 기술해둔 위키피디아의 링크로 연결해두겠습니다.

[size=150:1ehsufi9]왜 SSHFS를 이용할까?[/size:1ehsufi9]

[quote:1ehsufi9][url=http://en.wikipedia.org/wiki/Secure_copy:1ehsufi9]scp[/url:1ehsufi9], [url=http://en.wikipedia.org/wiki/SSH_file_transfer_protocol:1ehsufi9]sftp[/url:1ehsufi9], [url=http://en.wikipedia.org/wiki/Rsync:1ehsufi9]rsync[/url:1ehsufi9]와 같은 원격지계정에 파일을 전송하는 기술은 사용하기 전에 로컬계정에 파일을 복사 해야하것이 번거롭고, [url=http://en.wikipedia.org/wiki/Network_File_System_%28protocol%29:1ehsufi9]NFS[/url:1ehsufi9], [url=http://en.wikipedia.org/wiki/OpenAFS:1ehsufi9]OpenAFS[/url:1ehsufi9], [url=http://en.wikipedia.org/wiki/Samba_%28software%29:1ehsufi9]Samba[/url:1ehsufi9]와 같은 것은 두 시스템 모두의 관리자 계정이 필요하므로 관리자가 아니면 사용할 수 없다.

웹계정에 접속을 자주하는데, 매번 ssh나 ftp를 이용해서 파일을 전송하기 번거롭다면 sshfs를 이용하여 로컬시스템에 마운트를 해두면 편리하게 사용할 수 있습니다.[/quote:1ehsufi9]

[size=200:1ehsufi9]02. sshfs 패키지 설치[/size:1ehsufi9]

하단에 링크를 따라가시면 다른 리눅스 배포판에서 직접 빌드를 하는 설명들이 많이 있습니다. 본 포스트에서는 우분투 사용환경을 다루고 있기에 '우분투 방식’으로 간단하게 설치하도록 하겠습니다.

터미널을 열고 아래의 명령어를 복사하고 붙여넣은 다음에 엔터를 쳐줍니다.

[code:1ehsufi9]$ sudo apt-get install sshfs[/code:1ehsufi9]

위의 $ (dallar sign)은 빼고 복사하셔야 됩니다.
[color=#0040FF:1ehsufi9]
참고) 리눅스에서 $(Dallar Sign)표시는 보통의 유저권한을 의미하는 경우가 많습니다. 또한 #표시는 root권한을 가지고 있는 경우에 많이 사용합니다. (쉘의 모양은 커스터마이징이 가능하기에 다를 수 있습니다만 주로 리눅스 관련 문서들을 참고하시다보면 두 표시를 구분해서 설명하는 경우가 많습니다)[/color:1ehsufi9]

현재 제가 사용하고 있는 리눅스 커널은 2.6.31-17로 FUSE모듈을 포함하고 있는 것으로 알고 있습니다. 아래의 명령어로 확인할 수 있습니다.

[code:1ehsufi9]$ sshfs -V
[/code:1ehsufi9]
아래는 위 명령의 결과입니다.

[code:1ehsufi9]simplism@simplism-desktop:~$ sshfs -V
SSHFS version 2.2
FUSE library version: 2.7.4
fusermount version: 2.7.4
using FUSE kernel interface version 7.8[/code:1ehsufi9]

sshfs를 설치한 뒤에 위와 같은 결과가 나온다면 sshfs를 이용할 준비가 다 된 것입니다.
[size=200:1ehsufi9]
03. 웹계정 마운트[/size:1ehsufi9]

[code:1ehsufi9]
$ man sshfs[/code:1ehsufi9]

위의 명령어를 이용해서 sshfs의 사용 방식을 알아봅니다. synopsis 부분을 보면 일종의 공식(?)을 알 수 있습니다. 공식을 알아야 수학문제를 풀 수 있는 것처럼 sshfs도 잘 사용할 수 있겠지요?ㅎㅎ

[code:1ehsufi9]NAME
SSHFS - filesystem client based on ssh

SYNOPSIS
mounting
sshfs [user@]host:[dir] mountpoint [options]
unmounting
fusermount -u mountpoint[/code:1ehsufi9]

이런 설명들을 볼 때 참고하실 사항은 대괄호([])로 둘러싸인 부분은 일정조건이 충족된다면 생략될 수 있는 것입니다. 생략한 경우에는 기본값을 사용하게 되는 것입니다.

저의 경우는 원격지의 경로를 설정하는 부분에서 애를 조금 먹었습니다. 위의 [dir]부분인데요… 자꾸 그런 디렉토리는 존재하지 않는다… 라는 식의 경고만 띄우길레 직접 ssh로 접속해서 절대경로를 알아봐서 넣어주니 잘 되더군요…ㅎ

ssh로 접속해서 아래와 같은 명령어를 입력해주면, 해당 위치의 절대경로를 확인할 수 있습니다.

[code:1ehsufi9]$ pwd
/web/home/simplism/[/code:1ehsufi9]

제가 ssh로 접속했을 때 접속되는 위치가 저 위치인 것입니다. 이제 제 계정의 절대경로를 확인했으니 로컬의 특정디렉토리에 마운트를 시켜봅니다.

마운트를 원하시는 위치에 빈디렉토리를 하나 생성합니다. 저의 경우에는 제 홈계정의 web이라는 디렉토리를 만들었습니다. 터미널에서 ~(tilt)는 해당 계정의 홈디렉토리를 의미합니다. cd ~를 하게되면 홈디렉토리로 바로 이동할 수 있습니다.[code:1ehsufi9]

$ cd ~
$ mkdir web
$ sudo sshfs -o allow_other simplism@simplism.kr:/web/home/simplism/ /home/simplism/web/
simplism@simplism.kr`s password :
$ ls web
html/ mail/[/code:1ehsufi9]
관리자권한을 필요로 하기 때문에 sudo를 적고, -o allow_other 옵션을 붙여줍니다. man페이지를 참고하면 "allow access to other users"라고 나와있는데, 이 옵션을 주지 않으면 계속 permission denied로 접근을 할 수 없더군요… 해당 옵션을 주지 않는다면 매번 sudo를 이용해야 합니다. (보안의 이유로 매번 root권한을 이용해야할 필요가 있으신 분이 아니라면 해당 옵션을 사용하길 권장합니다.)

저의 경우는 해당 명령어를 입력한 뒤에 10초정도 뒤에야 비밀번호를 물어보더군요. 로컬에 있는 자원을 마운트할 때보다는 시간이 조금 더 걸리더군요.

비밀번호를 입력한 뒤에 다시 $ 표시가 나와 입력을 대기하는 상태가 되면 해당 디렉토리를 ls로 확인해봅니다. 본인의 웹계정의 내용이 정상적으로 출력이 된다면 성공입니다.

이렇게 정상적으로 마운트가 되면, 바탕화면에 마운트를 한 로컬의 디렉토리 이름으로 마치 하드디스크를 마운트한 것처럼 표시가 됩니다.

[attachment=0:1ehsufi9]web.png[/attachment:1ehsufi9]

이렇게 마운트가 된 상태에서는 allow_other옵션으로 루트권한이 필요없이 이용할 수 있기에 노틸러스에서도 바로 사용이 가능합니다.

[size=200:1ehsufi9]04.참고문서[/size:1ehsufi9]
[list=1:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]http://en.wikipedia.org/wiki/SSHFS[/url:1ehsufi9][/:m:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]http://truefeel.tistory.com/57[/url:1ehsufi9][/:m:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]http://coffeenix.net/board_view.php?bd_code=1491[/url:1ehsufi9][/:m:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]http://coffeenix.net/bbs/viewtopic.php?p=6011[/url:1ehsufi9][/:m:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]http://www.linuxjournal.com/article/8904[/url:1ehsufi9][/:m:1ehsufi9]
[:1ehsufi9][url:1ehsufi9]https://help.ubuntu.com/community/SSHFS[/url:1ehsufi9][/:m:1ehsufi9][/list:o:1ehsufi9]

심플리즘님이 이야기한 위 콘솔에서의 방식과
그냥 우분투데탑에서 "서버에 연결" 시에 책갈피(북마크) 해두어 다음부터 클릭으로 사용하는거와 머가 다를까요?
저는 "서버에 연결" 후 책갈피가 아주 쉬워 보이는데… :?
[attachment=0:35ttqcfr]screenshot3.png[/attachment:35ttqcfr]