SSHFS를 이용해 원격 마운트하기

배포를 할 때 가장 귀찮은 부분은 역시 수동으로 관리해 줘야 하는 것들, 이를테면 보안에 민감한 .env 파일이나 예외적인 몇몇 파일들이 있겠습니다.

그래서 생각해보니 설정 파일 이나 변경이 필요한 데이터들이 전부 Git 저장소에 있다면 배포 시에 정말정말 편할 거 같네요!

넵! 그런 일은 있을 수 없겠죠.
어쩌다 Git Account가 털리기라도 하면 오우 상상만 해도 아찔합니다.

그렇기에 일반적으로는 .env나 중요파일을 수동 혹은 Configuration manager system을 이용해 관리해 주곤 합니다.

그런데 파일 몇 개면 상관이 없을 텐데 수많은 파일을 매 배포 시마다 하나씩 추가 혹은 변경해줘야 한다면?

벌써 현기증이…

SSHFS 란?

SSH를 통한 Mount를 지원해 줍니다!

원격 서버에 파일관리가 상당히 번거롭기 때문에 로컬시스템에 마운트 후 쉽게 파일을 관리 할 수 있습니다.

SSH를 사용해보셨다면 사용방법도 크게 어렵지 않습니다.

물론 파일 몇 개 정도라면 굳이 마운트하지 않더라도 FTP나 SCP를 이용하는 게 좋겠죠?

사용방법

설치

Download Link
위 주소로 간 후 오른쪽 Stable Release항목에 FUSE SSHFS를 다운받아 줍니다.
그리고 설치, 참 쉽죠?

사용법

# mounting
sshfs [user@]host:[dir] mountpoint [options]

# unmounting
umount mountpoint

간단합니다.
꼭 원격 서버의 마운트 대상 경로를 지정해 주세요.

언마운트시 마운트 포인트를 모르겠다면 아래 명령어로 확인할 수 있습니다.

mount

디버깅하기

간단하게 모든 게 오픈된 웹 서버일 경우 위와같이 사용하면 되지만, 일반적으로 Bastion 서버를 통한다거나 혹은 키 인증을 해야 한다거나 여러 보안을 위한 장치가 되어있습니다.

이런 경우 마운트가 상당히 골치 아파 지는데 이때 사용할 수 있는 아주 유용한 디버깅 옵션이 존재합니다.

(sshfs명령어) -odebug,sshfs_debug,loglevel=debug

뒤에 위 명령어를 추가해 줄 경우 디버깅 되며 무슨 문제가 있는지 콘솔에 보여줍니다.

경로를 찾을 수 없다든지, 키가 권한이 없다든지 타임아웃이라든지 말이죠!

이를 이용한 약간의 팁이 있습니다.

마운트 후 간편하게 언마운트 하기

사실 웹서버를 마운트해서 개인 Cloud 서비스로 쓸 것도 아니고 계속 마운트할 이유도 없거니와 다시 unmount 할 때 마운트 포인트 찾기도 아주 귀찮습니다!

마운트 -> 작업 -> 언마운트의 반복일 텐데 말이죠, 그래서 아래와 같이 사용할 수 있습니다.

(sshfs명령어) -odebug

네 뒤에 -odebug만 추가해주면 됩니다. 간단!

odebug 옵션 추가 시 취소할 때까지 계속 디버깅 상태가 지속됩니다.

마운트 후 모든 작업이 끝났다면, 해당 터미널로 돌아가서 Ctrl + c 눌러주면 unmount 명령어를 사용할 필요 없이 바로 언마운트 됩니다.

그 외 옵션들

# 마운트 시 sshfs로 연결된 파일들이 root 사용자 권한으로 부여되기 때문에 아래 옵션을 추가해줘야 합니다.
-o allow_other 

# 키 파일 경로를 아래와 같이 지정해 줄 수 있습니다.
# ssh 처럼 -i 옵션을 지원해주지는 않네요.
-o IdentityFile=/Users/Me/.ssh/myserver.pem

# 아래와 같이 콤마를 이용하여 여러 옵션을 한 번에 지정해 줄 수 있습니다.
-o allow_other,IdentityFile=/Users/Me/.ssh/myserver.pem

# ssh config 파일을 사용하신다면 아래와 같이 수동으로 지정해주실 수 있습니다.
# Proxy를 거쳐야 한다거나 하면 ssh config 파일 사용이 더 바람직하겠죠.
-F ssh-config-filename

마치며

제 경우 회사에서의 배포를 위한 DevOps 지원으로 인해, 여러 서비스에 설정 파일 관리를 한 곳에서 하고 있는데요.

SSHFS를 사용해보니 마운트 후 VSCode 이용해서 여러 파일을 간편하게 관리는 물론 Versioning 또한 쉽게 할 수 있었습니다.

노가다하듯이 파일 올렸던 시절들이 주마등처럼 지나가네요.
(노가다한 시절이라고 해도 고작 2주 정도지만 정말 머리 터지는 줄…!)

Ref

Home - FUSE for macOS
Home · osxfuse/osxfuse Wiki · GitHub

Using SSHFS To Mount Remote Directories