NFS 설정 · 2 min read · Feb 08, 2026
[데비안-사르지] SSH를 통한 NFS 터널링
[데비안-사르지] SSH를 통한 NFS 터널링
마지막 업데이트: 2006-09-27 @ ~21:40
이유: NFS 서버에 고정 포트를 추가하여 작업을 쉽게 만들기 위해 :)
환영합니다
이 방법의 목표는 SSH 터널에서 작동하는 NFS 서버를 구축하는 것입니다. 이렇게 하면 호스트와 파일 서버 간의 모든 트래픽이 암호화되어 더 안전해집니다 :)
일반적으로 SSH 연결을 설정할 때마다 비밀번호를 입력해야 하지만 부팅 시 마운트를 할 수 있으므로 ssh-keygen을 사용하여 키 쌍을 생성하여 비밀번호를 입력하지 않고 로그인할 수 있습니다. 그러나 해당 로그인 세션은 단 1개의 명령만 실행하도록 제한할 것입니다 ;)
새로운 클린 데비안 사르지 설치를 시작으로 사용하겠습니다.
이 방법에서는 가상의 도메인 “linux.lan”을 사용할 것입니다.
소프트웨어 설치
NFS 서버부터 시작하겠습니다.
apt-get -y install nfs-kernel-server먼저 고정 포트에서 실행되도록 구성합니다. 이렇게 하면 방화벽을 구축하는 것이 훨씬 쉬워지며, 클라이언트 마운트도 간단해집니다.
echo “STATDOPTS=–port 2231” > /etc/default/nfs-common
echo “options lockd nlm_udpport=2232 nlm_tcpport=2232” >> /etc/modules.conf
echo “RPCNFSDCOUNT=8 RPCMOUNTDOPTS=’-p 2233’” > /etc/default/nfs-kernel-server
이제 나중에 공유를 마운트할 때 포트 2233을 사용할 수 있습니다 :) rpcinfo -p로 작동했는지 확인하세요. 만약 nlockmgr가 여전히 임의의 포트를 사용한다면, 이는 컴파일된 설정입니다. grub/lilo에서 커널 매개변수로 구성하세요:
“lockd.udpport=2232 lockd.tcpport=2232”.
새로운 사용자 “sleeper”를 생성하여 다른 호스트에서 SSH 터널을 설정하는 데 사용합니다. 이 계정에 대한 키를 생성하여 매번 비밀번호를 입력하는 대신 키 파일로 로그인할 수 있습니다. 이 계정은 ‘sleep’만 실행할 수 있도록 제한됩니다. 다른 명령은 단순히 실패할 것입니다.
adduser sleeper
su sleeper
이제 파일 서버를 사용할 클라이언트로 전환합니다.
먼저 키가 필요합니다:
ssh-keygen -t rsa -b 2048(기본값을 사용하고 비밀번호는 입력하지 마세요!)
이제 .pub 파일을 서버의 sleeper 홈 디렉토리로 복사합니다:
scp -P 12345 ~/.ssh/id_rsa.pub [email protected]:~/이제 서버로 돌아갑니다: ‘sleeper’ 사용자로서 키를 구성/설치해야 합니다:
mkdir ~/.ssh
cd ~/.ssh
mv ../id_rsa.pub ./id_rsa.pub
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
authorized_keys의 시작 부분에 다음을 추가합니다 (ssh-rsa […] 앞에):
client="client.linux.lan",command="/bin/sleep 600d"“client”를 클라이언트의 올바른 호스트 이름으로 바꾸거나 IP 번호를 사용하세요.
(모든 항목이 1줄에 유지되도록 하세요!)
파일 서버에 접근해야 하는 모든 클라이언트는 자신의 보안 데이터를 (id_rsa.pub 파일에서) authorized_keys 파일에 저장해야 하므로, 모든 호스트에 대해 이 작업을 반복해야 합니다.
클라이언트에서 SSH를 통한 NFS 마운트
NFS 및 mountd를 위한 터널을 시작하려면 다음 명령을 입력하세요:
(구문: ssh -f -c 암호화 -L 로컬포트:nfs서버:nfs포트 -l 사용자명 nfs서버 원격명령)
또한 mountd의 포트 번호는 NFS 서버를 재시작할 때마다 다르다는 점에 유의하세요… 이를 염두에 두세요.
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 61001:10.0.0.241:2049 -l sleeper 10.0.0.241 sleep 600d
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 62001:10.0.0.241:2233 -l sleeper 10.0.0.241 sleep 600d
이렇게 하면 거의 2년 동안 유지되는 연결이 생성됩니다… :)
이제 fstab을 편집하고 마운트합니다: echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt
물론 NFS 서버에서 정의된 마운트 가능한 폴더(공유)가 필요합니다:
mkdir /export
mkdir /export/data
mkdir /export/www-virtual
mkdir /export/www-conf
mkdir /export/mail-virtual
mkdir /export/mail-conf
이들을 /etc/exports에 추가합니다:
/home/export/data 10.0.0.241(rw,root_squash,sync)IP 주소가 NFS 서버 자체인지 확인하세요? SSH 터널을 설정한 후 localhost에서 마운트할 것이기 때문입니다.
외부 네트워크에서 서버에 접근할 수 없도록 몇 가지 보안 설정을 추가합니다: echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow
NFS를 재시작합니다: /etc/init.d/nfs-kernel-server restart
그게 다입니다! 이제 클라이언트에서 비밀번호를 입력할 필요 없이 파일 시스템을 마운트할 수 있습니다. 그리고 물론 모든 트래픽은 암호화됩니다 :)
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.