当前位置: > CentOS > CentOS教程 >

CentOS 6.5 安装配置NFS文件共享 并完成SSH免密码访问

时间:2016-05-19 18:13来源:linux.it.net.cn 作者:IT

安装 NFS 服务器所需的软件包:

这里用两台机器做实验一台NFS服务机和一台NFS客户端:

主机名(hostname)
ip地址
域名
角色
master.it.net.cn
192.168.182.100
master.it.net.cn
NFS服务器
node1.it.net.cn
192.168.182.101
node1.it.net.cn
NFS服务端
 
你也许对DNS的安装配置感兴趣,可以查看这篇文章:

Centos6.5编译安装DNS-bind-9.10初始化安装设置

http://linux.it.net.cn/CentOS/server/set/2016/0519/22063.html

 
NFS服务器端操作:
安装NFS:

[root@master ~]# yum install nfs-utils

这会将有的的软件包全部安装完成。
注意,NFS4不同于NFS3,不再需要安裝portmap,网上很多文章都还写着要安裝portmap,那些都过时了, CentOS 6之后用的是rpcbind。 

 

编辑/etc/exports文件,这个文件初始状态下没有内容,增加下面内容.(注意:如果这里使用了*通配符, 有可能客户端会连接不上出现 mount.nfs4: access denied by server while mounting master.it.net.cn:/,nfs有的版本对通配符支持不好,可以试试你的通配符支持效果):

[root@master ~]# vim /etc/exports

/home/hadoop/.ssh 192.168.*(rw,sync,fsid=0)

rw表示可读可写;sync表示同步写內存和磁盘,fsid=0表示將/home/exp这个文件夹包裝成起始根目录.

 

打开这些服务:

[root@node1 ~]# chkconfig rpcbind on

[root@node1 ~]# chkconfig nfs on

启动

[root@node1 ~]# service rpcbind start

[root@node1 ~]# service nfs start

 

确认NFS是否安装成功:

[root@node1 ~]# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    ...
    100005    3   tcp    750  mountd

 

检查 NFS 服务器是否输出共享的目录:

[root@master ~]# exportfs

/home/hadoop/.ssh  192.168.*

 

如果再次修改了exports文件,不用重启NFS,重新加载一次就可以

[root@master ~]# exportfs -rv

查看加载结果

[root@master ~]# exportfs -v

/home/hadoop/.ssh   192.168.*(rw,wdelay,root_squash,no_subtree_check,fsid=0)

 

 

NFS客户机操作:

先如上安装NFS软件

[root@node1 ~]# chkconfig rpcbind on

[root@node1 ~]# chkconfig nfs on

[root@node1 ~]# service rpcbind start

 

检查NFS服务端是否有共享目录:

[hadoop@node1 exp]$ showmount -e master.it.net.cn 
Export list for master.it.net.cn:

/home/hadoop/.ssh 192.168.*

 

新建用于放置挂载文件的目录,

[root@node1 ~]# mkdir -p /home/exp

注意/home/exp权限能允许挂载:

[root@node1 /]# ll /home

drwxr-xr-x 2 root root 4096 Aug 11 01:10 exp

 

挂载NFS服务器中的目录,挂载到本地的/home/exp

[root@node1 ~]# mount -t nfs4 master.it.net.cn:/ /home/exp 

 

 

查看挂载状态:

[root@node1 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 18G 4.3G 13G 26% /

tmpfs 250M 0 250M 0% /dev/shm

/dev/sda1 291M 33M 244M 12% /boot

master.it.net.cn:/ 18G 7.6G 9.1G 46% /home/exp

 

相关命令:
取消挂载:

[root@node1 ~]# umount /home/exp

 

查看挂载后文件夹的权限,这里是只允许hadoop用户操作.root用户不能操作.hadoop更改权限root才可以直接操作

[root@node1 /]# ll /home

drwx------ 2 hadoop hadoop 4096 Aug 11 06:21 exp

 

客户端机器开机启动自动挂载:

格式:

<server>:</remote/export> </local/directory> nfs < options> 0 0

增加下面内容:

[root@node1 ~]# vim /etc/fstab

master.it.net.cn:/ /home/exp nfs4 ro,hard,intr,proto=tcp,port=2049 0 0

 

 

到此NFS的设置就已经完成了.可以访问/home/exp进行操作了.

 

 

下面来配置SSH的免密码访问

假设NFS的服务端和客户端都有hadoop用户,用hadoop用户来进行ssh免密码通信.

 

NFS服务器切换到hadoop用户:

[hadoop@master ~]$ ssh-keygen -t rsa

[hadoop@master ~]$ cp .ssh/id_rsa.pub .ssh/authorized_keys

这里的authorized_keys是用于认证的公钥文件

 

连接自己,看看是否免密码.如果需要密码,请看下面的问题1解决方案.如果不需要密码,则本机到本机成功.

[hadoop@master ~]$ ssh master.it.net.cn

 

NFS客户端切换到hadoop用户:

[hadoop@node1 ~]$ ssh-keygen -t rsa

将挂载目录的authorized_keys 软连接到hadoop用户的.ssh目录下(注意:因为源文件和目标文件不再同一个目录,所以源文件和目标文件一定要使用绝对路径,否则会出现错误Too many levels of symbolic links错误)

[hadoop@node1 ~]$ ln -s  /home/exp/authorized_keys /home/hadoop/.ssh/

将本机生成的.ssh/id_rsa.pub文件,追加到.ssh/authorized_keys中

[hadoop@node1 ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

查看.ssh/authorized_keys文件内容,里面有node1和master:

[hadoop@node1 ~]$ cat  .ssh/authorized_keys

 

OK,到这里就设置完成了.

 

测试master和node1是否可以免密码访问了

[hadoop@master ~]$ ssh master.it.net.cn

[hadoop@master ~]$ ssh node1.it.net.cn

 

[hadoop@node1 ~]$ ssh master.it.net.cn

[hadoop@node1 ~]$ ssh node1.it.net.cn

 

相互再测试ping一下,OK没有问题.到这里就结束了.

 

下面介绍一下相关配置的说明和可能出现错误的处理:

 

exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

1.输出目录:

输出目录是指NFS系统中需要共享给客户机使用的目录;

2.客户端:

客户端是指网络中可以访问这个NFS输出目录的计算机

客户端常用的指定方式

指定ip地址的主机 192.168.0.200

指定子网中的所有主机 192.168.0.0/24

指定域名的主机 a.liusuping.com

指定域中的所有主机 *.liusuping.com

所有主机 *

3.选项:

选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:

访问权限选项

设置输出目录只读 ro

设置输出目录读写 rw

用户映射选项

all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash 与all_squash取反(默认设置);

root_squash 将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash 与rootsquash取反;

anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx 将远程访问的所有用户组都映射为匿名用 户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项
 

secure 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure 允许客户端从大于1024的tcp/ip端口连接服务器;

sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async 将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);

no_wdelay 若有写操作则立即执行,应与sync配合使用;

subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

nohide 挂载多个目录时容易用到,具体不清楚

 

exportfs 命令格式如下:

  # exportfs [-aruv]

  -a 全部挂载或卸载 /etc/exports中的内容 
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。

具体例子: 
  # exportfs -au 卸载所有共享目录
  # exportfs -rv 重新共享所有目录并输出详细信息

 

/etc/fstab格式: Fs_spec  fs_file  fs_type  fs_options  fs_dump  fs_pass

Fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录

Fs_file:本地挂载点

Fs_type:挂载类型

Fs_options:挂载参数

Fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0

Fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0

 

问题1解决方案:

如果ssh连接出现问题,需要输入密码才能连接:but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

修改文件:/etc/ssh/ssh_config 
找到如下内容: 
GSSAPIAuthentication yes 
将后面的 yes 改成 no 
也可以直接用如下命令修改: 
[root@LAMP1 ~]# sed -i 's/\(^[^#]*\)GSSAPIAuthentication yes/\1GSSAPIAuthentication no/g' /etc/ssh/ssh_config



(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容