您的位置:首页 > 其它

如何通过Kerberos建立两台服务器之间的信任

2016-11-24 22:30 711 查看
keywords: ssh crontab kerberos

场景: 我们经常要在服务器上定时的执行一些脚本,而这些脚本又需要访问另外一些服务器

问题: 我们的服务器采用的是kerberos认证,那么定时执行的脚本如何获取授权并成功访问另外一台服务器

解决办法:利用keytab来授权

让我们来假定一个场景:我们有A和B两台服务器,我们的需求是在A服务器上每天定时去在B服务器上执行echo "hello"命令

第一步:准备A上的脚本,在脚本开头加上如下的代码export PATH="/usr/kerberos/bin:$PATH" #kerberos 安装目录

export KRB5CCNAME=/tmp/krb5cc_pub_$$ #产生的pubkey存放的目录

trap kdestroy 0 1 2 3 5 15 #命令结束后删除pubkey

kinit -k -t /etc/krb5.keytab

第二步:B服务器授权A服务器的访问权限

在B服务器上的.k5login文件中添加 host/testhost@XXX.COM 其中testhost为A的服务器名,在.k5login的配置文件中服务器名必须小写!!!

补充:

由于有些机器是web账号,可能连读取/etc/krb5.keytab权限都没有,导致使用keytab认证失败,这时可以变化

一下,来进行keytab认证,步骤如下:

(1)找一台keytab认证没有问题的机器,将其/etc/krb5.keytab拷到你的目标机器上(如/data/web目录下面)

用klist -k /data/web/krb5.keytab看一下文件内容.比如

Keytab name: FILE:/data/web/krb5.keytab

KVNO Principal

3 host/sjswt37-52.opi.com@XIAONEI.OPI.COM

3 host/sjswt37-52.opi.com@XIAONEI.OPI.COM

3 host/sjswt37-52.opi.com@XIAONEI.OPI.COM

3 host/sjswt37-52.opi.com@XIAONEI.OPI.COM

由于37-52的keytab认证是ok的,所以接下来将采用37-52的principal进行keytab认证

(2)采用拷贝过来keytab进行认证

kinit -k -t /data/web/krb5.keytab host/sjswt37-52.opi.com@XIAONEI.OPI.COM

一下是过去的尝试,mark一下

——————————————————————————————

export PATH="/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/data/web/bin:/opt/apache-maven/bin:/data/web/java/bin"

export PATH="/usr/kerberos/bin:$PATH"

export KRB5CCNAME=/tmp/krb5cc_pub_$$

trap kdestroy 0 1 2 3 5 15

kinit -k -t /etc/krb5.keytab

不过貌似服务器上我没有root权限,所以

kinit -k -t /etc/krb5.keytab

时会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: