[Debian-Sarge]通过SSH隧道化NFS

[Debian-Sarge]通过SSH隧道传输NFS

最后更新:27-09-2006 @〜21:40
原因:为nfs服务器添加固定端口,使生活变得轻松:)

欢迎

这个howto的目标是构建一个在SSH隧道上工作的NFS服务器。这样,您的主机和文件服务器之间的所有流量都将被加密,从而更安全:)
通常每当您尝试建立SSH连接时都应输入密码,但是由于我们可能会在启动时挂载,因此我们将使用ssh-keygen创建一个密钥对,这样我们就可以在不输入密码的情况下进行登录。但是,我们将限制该登录会话仅执行1个命令;)
我们将使用一个新的干净的Debian Sarge安装开始。

在这个howto我将使用虚构域“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隧道。我们将为此帐户生成密钥,以便您可以使用密钥文件登录,而不是每次都输入密码。该帐户也将被限制为以这种方式执行“睡眠”。其他命令将简单失败。
adduser sleeper
su sleeper

现在切换到将使用我们的文件服务器的客户端。
首先我们需要一个关键:
ssh-keygen -t rsa -b 2048
(使用默认值和无密码!)

现在将.pub文件复制到服务器上的sleeper的homedir:
scp -P 12345 ~/.ssh/id_rsa.pub sleeper@10.0.0.241:~/

现在回到服务器:作为'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"
用客户端的正确主机名代替“客户端”,或者使用ip号码。
(但确保每个条目保持在1行!)

需要访问fileserver的每个客户端都需要将其安全数据(从id_rsa.pub文件)存储在authorized_keys文件中,因此您应该对每个主机重复此操作。

通过SSH在您的客户端上安装NFS

发出这些命令以启动nfs和mountd的隧道:
(语法:ssh -f -c encyption -L localport:nfsserver:nfsport -l username nfsserver remotecommand)
另请注意,mountd的portnumber与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和mount:
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隧道时,你可以从本地主机安装它们。

一些安全设置,因为我们不希望任何人从我们的网络外部访问服务器:
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
而已 !您现在可以在客户端上安装文件系统,而无需提供密码。并且所有交通将被加密:)
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏