做一个关于nfs,nis,ssh的实验,要求如下:

准备如下:有三台Linux机器,其中一个作为服务器,另外两个作为客户端!

在安装三台linux服务器的时候,若用的是虚拟机,则可以安装一台后,直接再克隆另外两台就可以了,但是克隆之后的虚拟机可能会上不去网,可以参考一下怎么解决!http://blog.sina.com.cn/s/blog_44f9e27501017hku.html

主服务器:10.1.1.114    mgt01

客户端:  10.1.1.115    c0101

客户端2: 10.1.1.116    c0102

1:在作为服务器的主机上设置nfs服务器,分享目录/share!

2:做一个nis服务,在主服务器上添加两个账户,使其能在客户端使用!

3:做一个服务,在客户端使用ssh登录时不输入密码可以直接进入!

首先关闭三台机器的防火墙,新手配置如果不懂防火墙会造成许多不必要的麻烦,干脆直接将其关闭!

一:在三台机器上依次按照如下操作关闭Linux的防火墙:

首先关闭selinux:

[root@rhelc01011 ~]# getenforce  /获取防火墙的状态,这里已经关闭 ! 
Disabled
[root@rhelc01011 ~]# senenforce 0 /若上述命令得到的结果是enforcing,表明防火墙正在工作/ 此时可以用此命令临时关闭防火墙,但重启后此设置会重置!
[root@rhelc01011 ~]# vi /etc/selinux/config /用vi打开此文件,把其中的SELINUX=后面的内容改为disabled。这样重启后selinux防火墙已经关闭!

关闭iptables:

[root@rhelc01011 ~]# iptables -F   /清空iptables的防火墙规则 
[root@rhelc01011 ~]# /etc/init.d/iptables save  /保存iptables的规则


第一个:首先我们来做nfs服务器:

若装机时系统中已经安装了nfs服务,则可以直接使用;若是没有则需要用yum安装;

yum install -y nfs-utils

nfs服务需要两个文件包nfs-utils和rpcbind,安装nfs的时候会直接把rpcbind直接安装上!

需要注意的是若使在使用redhat版本,则yum是需要付费的,对此我们可以使用yum本地源,具体设置过程http://blog.csdn.net/zheng0518/article/details/25834283

nfs服务的配置非常简单:首先在主服务器上操作:

    mkdir /share         /创建要共享的目录
    vim /etc/exports      /这个文件是nfs的主配置文件,作如下设置
    /share    10.1.1.115(rw)
    /share    10.1.1.116(rw)

在主服务器上启动nfs服务,启动时要注意,要先启动rpc协议再启动nfs服务,因为nfs服务需要借助rpc协议来工作!

	 /etc/init.d/rpcbind restart
         /etc/init.d/nfs  restart

然后在两个客户端上分别操作:

         [root@rhelc01011 ~]# showmount -e 10.1.1.114  /可以查看到nfs主服务器共享的目录
            Export list for 10.1.1.114:   
	   /share 10.1.1.116,10.1.1.115
	 [root@rhelc01011 ~]#

把分享的文件挂载到本地:

[root@rhelc01011 ~]# mkdir /test     /创建一个空目录 
[root@rhelc01011 ~]# mount -t nfs 10.1.1.117:/share  /test  /把分享文件挂载到本地 
[root@rhelc01011 ~]# df -h  /查看挂载后的文件 
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3           14G  1.1G   12G   9% /
tmpfs              939M     0  939M   0% /dev/shm
/dev/sda1          380M   32M  328M   9% /boot
/dev/sr0           3.6G  3.6G     0 100% /mnt/dvd
10.1.1.114:/share   14G  1.1G   12G   9% /test       /分享的文件已经挂载在本地
[root@rhelc01011 ~]#


虽然我们设置好了nfs服务,并且也在客户端挂载了要分享的文件,但是一旦关机后,

所有的这些都要重新再来一遍,接下来我们设置!把主机的nfs服务加入到开机自启动

把客户端的挂载,也设置为开机自动挂载!

首先在服务端操作:

[root@mgt01 ~]# chkconfig --add nfs  /把nfs设置为开机自启动 
[root@mgt01 ~]# chkconfig nfs on

 然后在客户端设置,开机自动挂载! 

把要挂载的命令添加到/etc/rc.d/rc.local

mount -t nfs 10.1.1.114:/share  /test /把要挂载的命令写入上述文件中!

至此nfs服务配置完毕,接下来可以设置nis服务!

第二:设置nis服务:

   nis服务器的主要功能及作用: 

  有没有想过,如果我有十部 Linux 主机,这十部主机仅负责不同的功能,事实上,所有的主机账号与对应的密码都相同!那么我是将账号与密码分别设定置在十部计算机上面,还是可以透过一部主机做为账号管理的功能,然后其他的主机只要当用户用登入时,就必须要到管理账号的主机上面确认其账号与密码呢?哪一个比较方便而且灵活? 当然是找一个账号管理的主机比较方便的多啦!如果有用户要修改密码,不必要去到十部主机修改密码啦。只要到主要管理主机去修改,其他的主机根本就不需要更动!哈哈!轻松又愉快呢!这个功能的达成有很多的方式,在这里,我们介绍一个很简单的方式,那就是 Network Information Service 这个NIS服务器的架设啦!

首先我们在作为nis的主服务端操作:

1》:nis服务端设定:

  由于 NIS 服务器需要使用 RPC 协议,且 NIS 服务器同时也可以当成客户端, 因此他需要的套件就有底下这几个:

yp-tools :提供 NIS 相关的查寻指令功能

ypbind   :提供 NIS Client 端的设定套件

ypserv   :提供 NIS Server 端的设定套件

portmap  :就是 RPC 一定需要的数据啊! 

在服务端直接用“yum install -y yp* 安装即可!因为rpcbind在nfs时候已经安装过,此时不用在安装!

2》配置nis的领域:

[root@mgt01 ~]# vi /etc/sysconfig/network

NETWORKING=yes       /这个文件中的内容不要改动,只需在最后一行加入即可! 
HOSTNAME=rhelmgt02 
NISDOMAIN=LIANXI    /最后一行加入,设置nis的领域为LIANXI

3》接下来是NIS 服务器最主要的配置文件,

[root@mgt01 ~]# vim /etc/ypserv.conf     /这个文件别的不需要改动,只需在最后面加入如下的内容即可!
 ·······
127.0.0.0/255.255.255.0    : *       : *                : none
10.1.1.115/255.255.255.0   : *       : *                : none
10.1.1.116/255.255.255.0   : *       : *                : none

nis服务器主配置文件内容介绍:nfs +nis+ssh_ssh

4》设定主机名与 IP 的对应 

[root@mgt01 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.1.114    mgt01                       /服务端的ip地址与主机名 
10.1.1.115    c0101			  /客户端的ip地址和主机名 
10.1.1.116    c0102

5》启动相关服务及检查:

[root@mgt02 ~]# /etc/init.d/ypserv start
启动 YP 服务器的服务:                                     [确定]
[root@mgt02 ~]# /etc/init.d/yppasswdd start
启动 YP 口令服务:                                         [确定]

注意,主要的 NIS 服务是 ypserv ,不过,如果要提供 NIS 客户端的密码修改功能的话, 最好还是得要启动 yppasswdd 这个服务才好。在启动完毕后,我们可以利用 rpcinfo 来检查看: 

因为在启动nfs服务时,rpcbind服务已经启动,因此在此不用再启动!

[root@mgt02 ~]# rpcinfo -u localhost ypserv   /键入此命令后,出现如下结果,就表示正常 
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting

6》建立数据库:

在完成了上面的所有步骤后,接下来我们得要开始将主机上面的账号档案转成数据库档案啦!转换的动作直接透过 /usr/lib/yp/ypinit 这个指令来处理即可!整个步骤是这样做的:

[root@mgt02 ~]# /usr/lib64/yp/ypinit -m  /如果系统是64位的则使用此命令,若是32位的则把当中的64去掉即可! 

At this point, we have to construct a list of the hosts which will run NIS
servers.  mgt02 is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.
	next host to add:  mgt01
	next host to add:        /这个地方按ctrl -d进入下面 
	The current list of NIS servers looks like this:

mgt02

Is this correct?  [y/n: y]   y 验证主机名 
······
mgt01 has been set up as a NIS master server. /已经设置为nis主服务器!

建立了数据库后,你必需要通知 ypserv 与 yppasswdd 这两支服务,告知数据库已经被更改了,直接把服务重新启动一下就可!

[root@mgt02 ~]# /etc/init.d/ypserv restart
停止 YP 服务器的服务:                                     [确定]
启动 YP 服务器的服务:                                     [确定]
[root@mgt02 ~]# /etc/init.d/yppasswdd restart
停止 YP 口令服务:                                         [确定]
启动 YP 口令服务:                                         [确定]

 至此nis的服务端已经设定完毕!nis服务端的设置详细步骤及详细介绍:http://vbird.dic.ksu.edu.tw/linux_server/0430nis_2.php

  然后接下来我们来设定nis的客户端

nis客户端仅需要的工具有ypbind和yp-tools,若机器上没有安装这两个工具,可以直接使用yum工具安装!启动 NIS client 的设定就简单多了!最主要是加入 NIS domain 当中,然后再启动 ypbind 即可。 虽然你可以手动去修改所有的配置文件,然而近期以来的 Linux distributions 账号处理机制越来越复杂, 所以如果你想要手动修改所有配置文件,恐怕会疯掉的~因此,这里建议你使用系统提供的工具来设定!可以利用系统里面的setup工具来设置,这样就会方便许多!

输入setup就会出现如下指令图框:

nfs +nis+ssh_nfs_02

直接运行第一行内容就可,然后会出现如下的页面:

nfs +nis+ssh_nfs_03

 选择其中的nis服务,然后选择下一步next!会出现如下页面:

nfs +nis+ssh_nfs_04

一定要输入正确的领域和服务器的ip地址,输入领域时注意大小写!选中ok后,会重新跳回第一个界面,这表示你的设置是正常的,否则就表示你的设置有问题!

接下来我们来看一下setup设置主要做了一些什么工作:

nfs +nis+ssh_nfs_05

nis客户端设置完毕后,可以用yptest来测试一下设置是否正确:

[root@c0102 ~]# yptest
Test 1: domainname
Configured domainname is "LIANXI"

Test 2: ypbind
Used NIS server: mgt01

Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)

Test 4: yp_first
nisuser2 nisuser2:$6$vhLCWYhf$1aOdGThCEED/r00qunAj6oVjImvHxqkW33JjtJp/q8UvYsKhNtmFyY1oBJK7RtJMQ6qSElVg2wSSryvUrfGBh0:1002:1002::/home/nisuser2:/bin/bash

Test 5: yp_next
nisuser1 nisuser1:$6$qNB7cVDK$aeR5LztqYP3HrrMyxfwJjb4EThb3uoqDrDWKmVxD2SA/.mBtNiY.VPgsPyssBJfhp9Fb0PInoRUZWOM/upafi1:1001:1001::/home/nisuser1:/bin/bash

Test 6: yp_master
mgt01

Test 7: yp_order
1456883661

Test 8: yp_maplist
services.byname
mail.aliases
rpc.byname
passwd.byuid
passwd.byname
hosts.byname
ypservers
hosts.byaddr
protocols.byname
group.byname
group.bygid
netid.byname
protocols.bynumber
rpc.bynumber
services.byservicename

Test 9: yp_all
nisuser2 nisuser2:$6$vhLCWYhf$1aOdGThCEED/r00qunAj6oVjImvHxqkW33JjtJp/q8UvYsKhNtmFyY1oBJK7RtJMQ6qSElVg2wSSryvUrfGBh0:1002:1002::/home/nisuser2:/bin/bash
nisuser1 nisuser1:$6$qNB7cVDK$aeR5LztqYP3HrrMyxfwJjb4EThb3uoqDrDWKmVxD2SA/.mBtNiY.VPgsPyssBJfhp9Fb0PInoRUZWOM/upafi1:1001:1001::/home/nisuser1:/bin/bash
1 tests failed

从这个测试当中我们可以发现一些错误,就是在 Test 3 出现的那个警告信息啦。还好,那只是说没有该数据库而已~ 该错误是可以忽略的。重点在第 9 个步骤 yp_all 必须要有列出你 NIS server 上头的所有帐户信息,如果有出现账号相关数据的话,那么就算验证成功了!

接下来我们要做的就是在服务端利用主服务器/etc/passwd里面的帐号信息,来登录主服务器!

[root@c0101 ~]# su - nisuser1
su: warning: cannot change directory to /home/nisuser1: No such file or dir /因为用户的家目录是在主服务器上的,因此不能登录,但是我们在此可以做一些修改:
-bash-4.1$ yppasswd               /输入yppasswd
Changing NIS account information for nisuser1 on mgt01.
Please enter old password:        /输入原来的旧密码
Changing NIS password for nisuser1 on mgt01.
Please enter new password:       /输入新密码
Please retype new password:       /输入新密码

The NIS password has been changed on mgt01.

-bash-4.1$ exit                /退出
logout

这样就更新了 NIS server 上头的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的数据库!

既然因为没有家目录,我们不能登陆,那么我们就可以利用nfs共享,把主服务器上的家目录共享出来,然后挂载到本地的家目录上就可以了!具体nfs共享,和共享/share是一样的!共享后,我们在看一下,是否能够进入主服务器系统上的账户:

[nisuser1@c0101 ~]$ su - nisuser2   /可以发现只要输入密码,就可以直接进入了!注意若你使用的root账户来进入主服务器的系统账户,则是不需要密码的!
Password: 
[nisuser2@c0101 ~]$

nis服务也已经搭建完毕,nis和nfs的服务结合也已经搭建完毕!nis客户端的详细配置和详细介绍http://vbird.dic.ksu.edu.tw/linux_server/0430nis_3.php

第三:设置ssh服务,使ssh远程登录root账户时,不需要输入密码,就可以直接登录!

[root@c0101 ~]# ssh 10.1.1.114    /远程登录主服务器
The authenticity of host '10.1.1.114 (10.1.1.114)' can't be established.
RSA key fingerprint is 14:1f:28:7e:a3:91:ee:c1:95:e8:87:19:6e:9d:15:cf.
Are you sure you want to continue connecting (yes/no)? yes   /第一次登录时会有指纹码验证,以后再登录就不会有这种问题了!
Warning: Permanently added '10.1.1.114' (RSA) to the list of known hosts.
root@10.1.1.114's password:      /这里需要你输入,要登陆账户的密码!
Last login: Wed Mar  2 10:50:09 2016 from c0102

然后我们来设置无密码登录:

[root@c0101 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /中间的步骤,可以按回车键继续!
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.  /私匙保存的地方
Your public key has been saved in /root/.ssh/id_rsa.pub.  /公匙保存的地方
The key fingerprint is:
03:e5:bd:2e:ee:0d:4b:c1:8b:ed:09:5e:92:f3:7b:b5 root@c0101
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|        .        |
|       o .       |
|      . . .      |
|       o   .     |
|        S .      |
|       + =  .    |
|      * B .. .   |
|     . X *. E    |
|      ..Oo.      |
+-----------------+

利用scp命令,把本地产生的公匙传送到服务器上的,你要登录用户的家目录中:

scp ~/.ssh/id_rsa.pub dmtsai@10.1.1.114:~

然后在主服务器端作如下设置:

[root@mgt01 ~]# mkdir .ssh   /创建一个.ssh目录
[root@mgt01 ~]# chmod 700 .ssh /修改目录权限为700
[root@mgt01 ~]# cat id_rsa.pub >> .ssh/authorized_keys  /把刚才传递过来的公匙放在authorized_keys中,注意文件名不要改变
[root@mgt01 ~]# chmod 644 .ssh/authorized_keys     /修改authorized_keys权限为644

然后在客户端重新登录一下。可以发现不需要密码:

[root@c0101 ~]# ssh mgt01
Last login: Wed Mar  2 14:43:39 2016 from c0102
[root@mgt01 ~]#

至此ssh无密码登录已经设置完成!