nfs +nis+ssh(2)

首先我们来谈一下要求:

有三台机器;主机名分别为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] ~]$

      时间: 2024-11-05 14:54:36

      nfs +nis+ssh(2)的相关文章

      菜鸟学SSH(十三)——Spring容器解析及简单实现

      最近一段时间,"容器"两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助Spring容器实现原理,简单说说吧. 简单的说,Spring就是通过工厂+反射将我们的bean放到它的容器中的,当我们想用某个bean的时候,只需要调用getBean("beanID")方法. 原理简单介绍: Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的

      玩转SSH(五):Struts + Spring + MyBatis(注解版)

      本文将在 玩转SSH(四):Struts + Spring + MyBatis 的基础上进行一些小的改动,将原本是 xml 配置方式的项目,改成注解的配置方式. 要将项目改成注解方式,一般是将在 Spring 中创建的对象通过注解的方式直接写在类中.下面我们看看如何进行配置. 一.修改 applicationContext.xml 文件 将原来的bean声明全部删除: <bean id="..." class="..."> <property ..

      SSH(2)-- ssh_config和sshd_config

      假定服务器ip为192.168.1.139,ssh服务的端口号为22,服务器上有个用户为pi,两边都是ubuntu. ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件 转自: http://blog.licess.com/sshd_config/ http://doc.licess.org/openssh/sshd_config.html # 1. 关于 SSH Server 的整体设定,包含使用的 p

      Myeclipse 6.5 整合SSH(一)

      Myeclipse 6.5 整合SSH(一) 最近小学期正在学习基于Myeclipse 的SSH整合,期间出现了各种各样的问题.问题太多,后面会整理后陆续另开博文写.因为发现老师教我们的过程与网上的有所不同,所以这里主要介绍MyEclipse的初始设置过程. 实验环境 MyEclipse 6.5 Tomcat 6.0 绿色版 Navicat Premium mysql-5.1.49-win32 环境安装的配置过程略. 1. 新建工程 打开MyEclipse,单击File –>New –> We

      部署NFS存储服务(下)

      作者:Georgekai 归档:学习笔记 2018/1/25 部署NFS存储服务(下) 2.1 服务端有关的配置 2.1.1 练习题:共享不同的俩个目录,分别赋予读和写权限 服务端部署过程: 第一个里程:编写nfs配置文件 vim /etc/exports /data/w  172.16.1.0/24(rw,sync,all_squash) /data/r  172.16.1.0/24(ro,sync,all_squash) 注:服务端配置文件中,尽量避免继承权限的发生(因权限大的会生效) 第二

      NFS存储服务(下)

      第1章 回顾及练习 1.1  回顾总结 1.1.1 NFS存储服务是什么? 网络文件系统,实现数据共享统一一致 1.1.2 NFS工作原理 1. 什么是rpc服务 rpc服务类似于中介,nfs服务将启动的进程和端口信息,向rpc服务进行注册 nfs客户端向rpc服务发出请求,进行共享目录挂载,从而实现通过网络存储数据信息 2. 服务端做了三件事: ①. 首先启动rpc服务 ②. 其次启动nfs服务 ③. nfs服务向rpc服务进行注册,只注册一次(如果nfs服务进行了重启,会再次注册) 3. 客

      Linux 利用hosts.deny 防止暴力破解ssh(转)

      一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7系统).Development Tools. 主机ip:192.168.30.64 (服务器端).192.168.30.64(客户端+ 暴力破解[Hydra]) 在30.63上进行暴力破解30.64 2.2 客户端上安装 破解程序 hydra.关于该程序的详情请去官网. 安装该软件的依赖环境: [[

      SSH(1)

      SSH:顾名思义(spring,struts2,hirbernate)  Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求.在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发.(View:沿用JSP,HTTP,Form,Tag,Resourse :Controller:ActionServlet,struts-config.xml,Action) Hibernate: Hi

      SSH(一):环境搭建

      SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架.大多数公司都在使用. 集成SSH框架的系统从职责上分为三层:表示层.业务逻辑层和数据持久层,以帮助开发人员在短期内搭建结构清晰.可复用性好.维护方便的Web应用程序.其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转:利用Hibernate框架对持久层提供支持,处理请求数据并返回结果:Spring则是做管理,管理struts和hib