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)
安装 NFS 服务器所需的软件包: 这里用两台机器做实验一台NFS服务机和一台NFS客户端:
Centos6.5编译安装DNS-bind-9.10初始化安装设置 http://linux.it.net.cn/CentOS/server/set/2016/0519/22063.html
安装NFS:
[root@master ~]# yum install nfs-utils
这会将有的的软件包全部安装完成。
编辑/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
检查 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 /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.客户端:
3.选项:
用户映射选项 其它选项
exportfs 命令格式如下: # exportfs [-aruv]
-a 全部挂载或卸载 /etc/exports中的内容
具体例子:
/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 (责任编辑:IT) |