NFS設定 · 1 min read · Feb 08, 2026

[Debian-Sarge] SSHトンネルを介したNFSのトンネリング

[Debian-Sarge] SSHトンネルを介したNFSのトンネリング

最終更新: 2006年9月27日 @ ~21:40

理由: NFSサーバーの固定ポートを追加して、作業を簡単にするためです :)

ようこそ

このハウツーの目的は、SSHトンネル上で動作するNFSサーバーを構築することです。この方法では、ホストとファイルサーバー間のすべてのトラフィックが暗号化され、より安全になります :)

通常、SSH接続を確立するたびにパスワードを入力する必要がありますが、起動時にマウントする可能性があるため、ssh-keygenを使用してキーペアを作成し、パスワードを入力せずにログインできるようにします。ただし、そのログインセッションは1つのコマンドを実行することに制限します ;)

新しいクリーンなDebian Sargeのインストールを使用して始めます。

このハウツーでは、架空のドメイン「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行に収まるようにしてください!)

ファイルサーバーにアクセスする必要があるすべてのクライアントは、authorized_keysファイルにセキュリティデータ(id_rsa.pubファイルから)を保存する必要があるため、これをすべてのホストに対して繰り返す必要があります。

クライアントでのSSH経由のNFSのマウント

NFSとmountdのトンネルを開始するために、これらのコマンドを発行します:

(構文: ssh -f -c encryption -L localport:nfsserver:nfsport -l username nfsserver remotecommand)

また、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

これで完了です! パスワードを入力することなく、クライアントでファイルシステムをマウントできるようになりました。そしてもちろん、すべてのトラフィックは暗号化されます :)

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。