首先我们来谈一下要求:
有三台机器;主机名分别为mgt01 c0101 c0102;
1:我们把mgt01作为服务端,设置nfs共享/share目录,并且创建5个用户,把用户的家目录指向/share/home;
2:设置nis服务,用来管理上面创建的5个用户
3:设置ssh通信。使其能在任何一个用户上无密码访问三台主机!
一:设置nfs共享,把普通用户的家目录放到/share目录下面,共享出去!
1》用shell脚本创建10个用户,把用户的家目录放在/share目录下面,并且修改创建用户的密码为 61234230
脚本内容如下:
#!/bin/bash if [ -e /share ];then mv /share /share.back mkdir /share else mkdir /share fi for i in `seq 1 5`;do if grep -q ^user"$i":/etc/passwd ;then userdel "user$i" useradd -d/share/home/user$i user$i echo 61234230 | passwd --stdinuser$i echo ok else useradd -d/share/home/user$i user$i echo 61234230 | passwd --stdinuser$i fi done
看一下脚本是否创建了所需用户:产生所需用户的家目录:
[[email protected] ~]# cd/share/home [[email protected] home]# ls user1 user2 user3 user4 user5
在/etc/passwd中产生了用户
[[email protected] ~]# tail -5/etc/passwd user1:x:500:500::/share/home/user1:/bin/bash user2:x:501:501::/share/home/user2:/bin/bash user3:x:502:502::/share/home/user3:/bin/bash user4:x:503:503::/share/home/user4:/bin/bash user5:x:504:504::/share/home/user5:/bin/bash [[email protected] ~]#
2》然后用nfs共享把创建的/share目录共享出去 /nfs的搭建参考http://zidingyi.blog.51cto.com/10735263/1708535
[[email protected] ~]# vim/etc/exports /share *(rw,no_root_squash){注意设置权限}
3》在客户端挂载:
[[email protected] ~]# mount -t nfs10.1.1.114:///share /share [[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 14G 1.9G 11G 15% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 283M 40M 228M 15% /boot 10.1.1.114:///share 14G 5.2G 7.5G 41% /share
4》再把挂载命令写入客户端的/etc/fstab中,让它开机自动挂载!
10.1.1.114:///share /share nfs defaults 0 2
注意写入/etc/fstab命令的格式
5》我们也可以检测一下,nfs是否共享成功!
[[email protected] ~]# cd /share/home [[email protected] home]# ls user1 user2 user3 user4 user5 [[email protected] home]#
二:设置nis,添加帐号管理!
在nis的服务器端设置
1》由于 NIS 服务器需要使用 RPC 协议,且 NIS 服务器同时也可以当成客户端,因此它需要的软件就有底下这几个:
yp-tools :提供 NIS 相关的查寻指令功能 ypbind :提供 NIS Client 端的设定软件 ypserv :提供 NIS Server 端的设定软件 rpcbind :就是 RPC 一定需要的数据啊!
所以可以首先安装这些应用:yum install –y yp*
2》首先设置nis的领域 /若更改nis域名,则必须重启network,或者用nisdomainname更改!
[[email protected] ~]# vim/etc/sysconfig/network NETWORKING=yes HOSTNAME=mgt01 NISDOMAIN=LINGYU/文件中自带的内容不要改动,设置其领域为名LINGYU/
3》nis的主要配置文件是/etc/ypserv.conf
我们可以修改这个配置文件,也可以保持不变,使用其默认配置!
4》设定主机与ip对应;NIS 大部分是给局域网络内的主机使用的,所以当然就不需要 DNS 的设定了。/配置文件直接在后面加入ip地址和主机名的照应
[[email protected] ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4 ::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6 10.1.1.114 mgt01 10.1.1.115 c0101 10.1.1.116 c0102
5》启动观察
[[email protected] ~]# /etc/init.d/ypserv restart [[email protected] ~]# /etc/init.d/yppasswddrestart
6》检查一下看是否正常启动:
[[email protected] ~]# rpcinfo -ulocalhost ypserv program 100004 version 1ready and waiting program 100004 version 2ready and waiting/若出现“准备就绪等待服务”说明启动正常!
7》处理帐号并建立数据库;
[[email protected] ~]# /usr/lib64/yp/ypinit –m / 需要注意的是若你的系统是32位的。则需要把命令中的64去掉,然后再执行!
At this point, we have toconstruct a list of the hosts which will run NIS servers. mgt01 is in the list of NIS serverhosts. Please continue to add the names for the otherhosts, one per line. When you are donewith the list, type a <controlD>. next host to add: mgt01 next host to add: /这里按ctrl –d继续下面的操作 The current list of NISservers looks like this: mgt01 Is this correct? [y/n: y] y /键入字母y We need a few minutes tobuild the databases... Building /var/yp/LIANXI/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory`/var/yp/LIANXI‘ Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updatingservices.byservicename... Updating netid.byname... Updatingprotocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: Leaving directory`/var/yp/LIANXI‘ mgt01 has been set up as aNIS master server /mgt01已经被设置为nis主服务器!. Now you can run ypinit -smgt01 on all slave server.
在nis的客户端端设置:
NIS client 端所需要的软件仅有:ypbind yp-tools;同样若系统中没有这两个软件,则直接可以用yum install –y yp* 安装!安装ypbind的时候,系统会自动把它的依赖包yp-tools安装上!
1》 然后我们可以在客户端配置,客户端配置有一个非常方便的办法就是,借助于setup工具,键入setup—>选择authentication configurationà选择nis—>在弹出的对话框中请务必填正确的领域名与服务器ip!
2》 修改network内容,增加nisdomain;
[[email protected] ~]# vim/etc/sysconfig/network HOSTNAME=c0102 NETWORKING=yes NISDOMAIN=LIANXI
[[email protected]~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4 ::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6 10.1.1.114 mgt01 /前面的内容不要改动,直接在最后面加上ip地址与主机名/
4》设定nis server的域名和ip
[[email protected] ~]# vim /etc/yp.conf domain LIANXI server 10.1.1.114/这个文件中的其余内容不要改变直接,在最后一行加入nis server的域名和ip地址/
5》设定账户信息读取顺序
[[email protected] ~]# vim /etc/nsswitch.conf passwd: files nis /直接在后面加nis就i可以! shadow: files nis group: files nis
6》启动相应的服务;并设定为开机启动!
[[email protected]~]# /etc/init.d/rpcbind start [[email protected]~]# /etc/init.d/ypbind start [[email protected] ~]# chkconfig rpcbind on [[email protected] ~]# chkconfig ypbind on
7》在客户端检测一下
[[email protected] home]# 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 user5 user5:$6$XmQ9zV10$jQBxzPoccWeuAN5bvfDupAkDfrJTTvyVKkFbZYzbCorjUIT8DLSBn7pN1GFNgZRbS0RBwbCNebvMdE.jPfJiJ0:504:504::/share/home/user5:/bin/bash Test 5: yp_next user3user3:$6$LYenxUyA$dsfLGF9t6td1S1ms4bHwMNmJO6AHrWqV3//S9tkYUTDeToFe/CJVkYTsohXv1Q1mzYUtWw7uqULbDYaiUk1aL/:502:502::/share/home/user3:/bin/bash user1user1:$6$P5gKu3Nc$eWxdkvbUy0Q8ImcramScWTL5szsoXARxdpR3okTT//f0YCgFiobga9CfQpa18OSD9Lti5K2cLy6GDiRIlzhZQ0:500:500::/share/home/user1:/bin/bash user4user4:$6$yCNy8J8U$4iY4yMbjd5d9g/ZGJ9fZIywWcIkF7.AOl/fOxLCLK9SrRKnXIjvMcbp13.0Sp/QFuVMbwpOPX9/SnskkJkKPw.:503:503::/share/home/user4:/bin/bash user2user2:$6$WS5xCVGP$G9doYN4hAtOQDhgNxrPq6yk7EXvj.OFaNNKpVqrgcxIxlOZ2NAqP36MdTSVcrdCsmWXcCwAANQ/xiSlndLF7U/:501:501::/share/home/user2:/bin/bash Test 6: yp_master mgt01 Test 7: yp_order 1457533004 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 user5user5:$6$XmQ9zV10$jQBxzPoccWeuAN5bvfDupAkDfrJTTvyVKkFbZYzbCorjUIT8DLSBn7pN1GFNgZRbS0RBwbCNebvMdE.jPfJiJ0:504:504::/share/home/user5:/bin/bash user3user3:$6$LYenxUyA$dsfLGF9t6td1S1ms4bHwMNmJO6AHrWqV3//S9tkYUTDeToFe/CJVkYTsohXv1Q1mzYUtWw7uqULbDYaiUk1aL/:502:502::/share/home/user3:/bin/bash user1user1:$6$P5gKu3Nc$eWxdkvbUy0Q8ImcramScWTL5szsoXARxdpR3okTT//f0YCgFiobga9CfQpa18OSD9Lti5K2cLy6GDiRIlzhZQ0:500:500::/share/home/user1:/bin/bash user4user4:$6$yCNy8J8U$4iY4yMbjd5d9g/ZGJ9fZIywWcIkF7.AOl/fOxLCLK9SrRKnXIjvMcbp13.0Sp/QFuVMbwpOPX9/SnskkJkKPw.:503:503::/share/home/user4:/bin/bash user2user2:$6$WS5xCVGP$G9doYN4hAtOQDhgNxrPq6yk7EXvj.OFaNNKpVqrgcxIxlOZ2NAqP36MdTSVcrdCsmWXcCwAANQ/xiSlndLF7U/:501:501::/share/home/user2:/bin/bash 1 tests failed 从这个测试当中我们可以发现一些错误,就是在 Test 3 出现的那个警告信息啦。还好,那只是说没有该数据库而已~该错误是可以忽略的。重点在第 9 个步骤 yp_all 必须要有列出你 NIS server 上头的所有帐户信息,如果有出现账号相关数据的话,那么应该就算验证成功了!/
8》也可以用ypwhich检测一下:
[[email protected] ~]# ypwhich /会返回nis server 的主机名 mgt01 /nis服务器主机名
若想在一个机器上即设置成nis server和nis client;首先在机器上设置nis server的形式然后检测是否正确,若正确则按照设置nis client的步骤在其上面设置;设置完成之后,并且注意把客户端的服务加入开机启动!!!注意检测其正确性!
我们验证一下设置的nis的服务器:
[[email protected] ~]# su - user1 [[email protected]~]$ pwd /share/user1 [[email protected]~]$ su - user2 Password: [[email protected]~]$
ssh无密码登录;
制作不用密码立即登入的ssh用户:
既然 SSH 可以使用密钥系统来比对数据,并且提供用户数据的加密功能,那么可不可能利用这个Key 就提供用户自己进入主机,而不需要输入密码呢?呵呵!好主意!我们可以将 Client 产生的 Key 给他拷贝到 Server 当中,所以, 以后 Client 登入 Server 时,由于两者在 SSH 要联机的讯号传递中,就已经比对过 Key 了, 因此,可以立即进入数据传输接口中,而不需要再输入密码呢!在实作上的步骤可以是:客户端建立两把钥匙:想一想,在密钥系统中,是公钥比较重要还是私钥比较重要?当然是私钥比较重要!因此私钥才是解密的关键啊!所以啰,这两把钥匙当然得在发起联机的客户端建置才对。利用的指令为ssh-keygen 这个命令;客户端放置好私钥档案:将 Private Key 放在 Client 上面的家目录,亦即 $HOME/.ssh/ , 并且得要注意权限!将公钥放置服务器端的正确目录与文件名去:最后,将那把 Public Key 放在任何一个你想要用来登入的服务器端的某 User 的家目录内之 .ssh/ 里面的认证档案即可完成整个程序。
接下来我们进行具体的操作步骤;
[[email protected] ~]# 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 [email protected] The key‘s randomart image is: +--[ RSA 2048]----+ | . | | o . | | . . . | | o . | | S . | | + = . | | * B .. . | | . X *. E | | ..Oo. | +-----------------+
利用scp命令,把本地产生的公匙传送到服务器上的,你要登录用户的家目录中:
scp~/.ssh/id_rsa.pub [email protected]:~
然后在主服务器端作如下设置:
[[email protected]~]# mkdir .ssh /创建一个.ssh目录 [[email protected]~]# chmod 700 .ssh /修改目录权限为700 [[email protected]~]# cat id_rsa.pub >> .ssh/authorized_keys /把刚才传递过来的公匙放在authorized_keys中,注意文件名不要改变 [[email protected]~]# chmod 644 .ssh/authorized_keys /修改authorized_keys权限为644
然后在客户端重新登录一下。可以发现不需要密码:
[[email protected]~]# ssh mgt01 Lastlogin: Wed Mar 2 14:43:39 2016 fromc0102 [[email protected]~]#
至此ssh无密码登录已经设置完成!
在有两台的情况下,我们可以这样操作,但是若有多台机器,我们怎么设置才能实现多个普通账户与ssh账户之间的互相不需要密码访问呢!
Eg:有主机mgt01 10.1.1.114
C0101 10.1.1.115
C0102 10.1.1.116
还有三个普通用户,user1,user2,user3!我们要求是每一个用户包含root用户,可以无密码访问其它的主机:
1》 首先把我们的三个普通用户的家目录是共享在三台主机上的;由上面的nfs和nis服务可以知道!
2》 在mgt01主机上操作如下:
1 :[[email protected] ~]#ssh-keygen /会在家目录下新建一个.ssh家目录,里面含有公钥和私钥,
2[[email protected]~]$cat .ssh/id_rsa.pub >>.ssh/authorized_keys /把公钥写入authorized_keys中;
3:修改权限,请务必操作这一步;万一你忘了文件的权限呢?即便你的文件权限本来没有问题,但这一步也不会起什么坏作用!
[[email protected] ~]#chmod 700 .ssh [[email protected] ~]#chmod 644 .ssh/authorized_keys
4:以上步骤完成之后,我们可以验证一下:
[[email protected] ~]# sshlocalhost Last login: Thu Mar 1010:20:00 2016 from c0102 [[email protected]~]#
[[email protected] ~]# scp .ssh c0101:///root/.ssh [[email protected] ~]# scp.ssh c0102:///root/.ssh
在c0101上面验证:
[[email protected] ~]# ssh mgt01 Last login: Thu Mar 1010:30:20 2016 from localhost [[email protected] ~]# ssh c0101 Last login: Thu Mar 1010:19:37 2016 from c0101 [[email protected] ~]#
[[email protected] ~]# ssh mgt01 Last login: Thu Mar 1010:34:08 2016 from c0101 [[email protected] ~]# ssh c0101 Last login: Thu Mar 1010:34:11 2016 from mgt01 [[email protected] ~]#
[[email protected] ~]$ ssh-keygen [[email protected] ~]$ catid_rsa.pub >>authorized_keys [[email protected] ~]$chmod 644authorized_keys/一定要改权限;
[[email protected] ~]$ ssh c0101 Last login: Thu Mar 1009:51:11 2016 from mgt01 [[email protected] ~]$ ssh c0102 Last login: Thu Mar 1009:51:22 2016 from c0101 [[email protected] ~]$