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_keysauthorized_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.allowNFSを再起動します:
/etc/init.d/nfs-kernel-server restartこれで完了です! パスワードを入力することなく、クライアントでファイルシステムをマウントできるようになりました。そしてもちろん、すべてのトラフィックは暗号化されます :)
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。