环境介绍:

2台机器,一台做为服务器,主机名为station1.example.com,一台作为测试用客户端,主机名为station2.example.comip地址分别为172.16.0.1172.16.0.2station1上将运行NIS,kerberos服务,station2将使用station2提供的NISkerberos用户信息进行登录。并最终在所有niskerberos域里实现单点登录(既:只需要在第一次登录系统的时候输入密码)

NIS服务器的配置

station1配置

修改/etc/sysconfig/network绑定NIS服务器的端口(可选,这么做是为了方便防火墙配置)

YPSERV_ARGS="-P841"

修改/etc/sysconfig/yppasswdd绑定yppasswdd的端口(可选,这么做是为了方便防火墙配置)

YPPASSWDD_ARGS="--Port842"

修改/var/yp/securenets加入允许查看NIS信息的服务器的网段(可选,增强安全性)

255.255.255.0 172.16.0.0

修改/etc/sysconfig/network(设置NIS的域名)

NISDOMAIN=station1

修改/var/yp/Makefile将(配置automount实现当station2或者其他客户端登录自己的服务器时,自动将station1上用户的home挂接到本地)

all: passwd group hostsrpc services netid protocols mail

修改为

all: passwd group hostsrpc services netid protocols mail auto.master auto.home

执行system-config-authentication-->启用NIS支持-->配置NIS-->输入NIS station1 NIS服务器:172.16.0.1-->确定保存

执行chkconfig ypserv on;/etc/init.d/ypserv start

初始化NIS数据库

/usr/lib/yp/ypinit -m

配置automount

touch /etc/auto.home

cd /var/yp

make

配置NFS,将home目录共享给客户端

vi /etc/exports加入

/home 172.16.0.0/24(rw)

chkconfig nfson;/etc/init.d/nfs start

修改/etc/auto.master,注释掉所有以前的配置,加入

/home auto.home

(切不可启动autofs,这个工作交给ypserver来做的)

创建/etc/auto.home文件,其中的station1换成你自己的主机名

* -rw,syncstation1:/home/&

执行下面的命令

# cd /var/yp

# make

# /etc/init.d/ypservrestart

客户端station2配置

修改/etc/auto.master注释掉其他配置,并加入

+auto.master

执行system-config-authentication.选择Enable NIS然后点Configure按照我们刚才的设置填入NIS 域和NIS服务器的地址然后点OK确定,并退出

重启ypbind服务

# /etc/init.d/ypbindrestart

# chkconfig ypbind on

重启autofs

# /etc/init.d/autofsrestart

# chkconfig autofs on

测试

station1上创建测试用户

#useradd lief

# passwd lief

重新编译nis数据库

# make -C /var/yp

station2lief登录station2,密码是在station1上分配的密码,应该可以登录系统,并且拥有自己的home目录,其home目录来自于station1的共享

还是上面的环境,在接下来的配置中,我们要通过配置kerberos将原来的系统用户全部存储到kerberos数据库里,并实现所有域服务器中的节点单点登录

首先配置服务器节点station1:

修改/etc/krb5.conf

[libdefaults]中的default_realm改为 STATION1.EXAMPLE.COM

[realms]中的EXAMPLE.COM改为STATION1.EXAMPLE.COM kdc = station1.example.com:88以及 admin_server =station1.example.com:749

[domain_realm]中的记录改为

station1.example.com =STATION1.EXAMPLE.COM

station2.example.com =STATION1.EXAMPLE.COM

如果还有更多的客户端节点,都需要在上面列出

[appdefaults]中加入

validate=true

保存退出

修改 /var/kerberos/krb5kdc/中的kdc.conf

[kdcdefaults]

acl_file =/var/kerberos/krb5kdc/kadm5.acl

dict_file =/usr/share/dict/words

admin_keytab =/var/kerberos/krb5kdc/kadm5.keytab

v4_mode = nopreauth

[realms]

STATION3.EXAMPLE.COM = {

master_key_type =des3-hmac-sha1

default_principal_flags =+preauth

supported_enctypes =des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normaldes-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3

}

修改/var/kerberos/krb5kdc/kadm5.acl文件为

*/admin@STATION3.EXAMPLE.COM*

初始化kerberos数据库

kdb5_util create -rstation1.example.com -s

配置数据库

执行kadmin.local

kadmin.local: addprincroot/admin (设置管理密码)

kadmin.local: addprinclief (创建kerberos用户lief,如果系统里还有其他需要登录的用户,都用addprinc命令创建,用户名要和系统用户名一致,密码随便配置)

kadmin.local: listprinclief(获取用户信息)

kadmin.local: ktadd -k/var/kerberos/krb5kdc/kadm5.keytab kadmin/admin

kadmin.local: ktadd -k/var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw

(以上命令创建kadmindkeytab文件)

kadmin.local: addprinc-randkey host/station1.example.com

kadmin.local: ktadd -k/etc/krb5.keytab host/station1.example.com(创建本地的keytab文件)

启动服务

chkconfig krb5kdc on;/etc/init.d/krb5kdc start

chkconfig kadminon;/etc/init.d/kadmin start

配置客户端节点station2,如果有多个节点都需要这么配置

复制station1上的/etc/krb5.conf到本地/etc目录

执行kadmin -p root/admin

kadmin: addprinc -randkeyhost/station2.example.com

kadmin: ktadd -k/etc/krb5.keytab host/station2.example.com

去掉原先系统用户的密码,station1

usermod -p '!!' lief(如果有多个普通用户,需要如法炮制)

cd /var/yp;make

修改每个节点上的/etc/ssh/ssh_config文件加入

GSSAPIDelegateCredentialsyes

开启信任转发

station1station2上执行system-config-authentication-->验证-->启用Kerberos支持-->配置Kerberos-->确认域 KDC和管理服务器的配置和/etc/krb5.conf中的一致,点确定保存

测试

station1上用lief 采用ssh登录station2

ssh lief@station2

登录成功后再执行

ssh lief@station1

这时候应该是不需要密码了

配置结束