nfs-secure-server(sysvinit中为rpc.svcgssd) 启动总是失败;
journalctl 或手动rpc.svcssd -frivvv 查看如下错误信息:
ERROR: GSS-API: error in gss_acquire_cred(): Unspecified GSS failure. Minor code may provide more information - No principal in keytab matches desired name
Unable to obtain credentials for 'nfs'
unable to obtain root (machine) credentials
do you have a keytab entry for nfs/@ in /etc/krb5.keytab?
buddy说kerberos没配对,找资料看看; kerberos跟rpcsvcgssd啥关系啊?
我的krb账号是好用的呀~~ 难道要配个kerberos服务才能把这个服务起来? /etc/krb5.keytab文件怎么生成?
google了一堆kerberos配置的页面,有说dns不对的,有说时间不对的,有简单说svcgssd依赖krb5.keytab的,,
最后又搜krb5.keytab生成的方法 结果各式各样不统一,稀里糊涂生成一个,结果还是同样的结果;
郁闷了,不行必须把原理搞清楚,仔细看看kerberos原理介绍,krb5.keytab文件作用再说:
kerberos工作原理http://blog.chinaunix.net/uid-12076195-id-3545906.html
What is a keytab, and how do I use one?
看完介绍,才明白原来重点在nfs/@上面,依据添加principle的方法又加了nfs的principle,
把新生成的keytab拷贝到/etc/krb5.keytab,再启动nfs-secure-server(rpc.svcgssd)终于启动OK了!
# ktutil
ktutil: addent -password -p nfs/$(hostname)@REDHAT.COM -k 1 -e aes256-cts
Password for nfs/$(hostname)@REDHAT.COM:
ktutil: read_kt my.keytab
ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 1 nfs/$(hostname)@REDHAT.COM
2 1 myname@redhat.com
ktutil: wkt my.keytab
ktutil: q
# cp my.keytab /etc/krb5.keytab
# systemctl start nfs-secure-server
# systemctl status nfs-secure-server
nfs-secure-server.service - Secure NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; enabled)
Active: active (running) since Wed, 27 Mar 2013 12:07:48 +0800; 8s ago
Process: 12537 ExecStart=/usr/sbin/rpc.svcgssd $RPCSVCGSSDARGS (code=exited, status=0/SUCCESS)
Main PID: 12538 (rpc.svcgssd)
CGroup: name=systemd:/system/nfs-secure-server.service
└ 12538 /usr/sbin/rpc.svcgssd
(Kerberos 5 setup for NFSv4
)
==============================================================================
ktutil
- Kerberos 密钥表维护实用程序
用法概要
/usr/bin/ktutil
描述
ktutil 命令是用于管理密钥表文件中的密钥列表的交互式命令行界面实用程序。您必须先读入密钥表的密钥列表,然后才能对其进行管理。此外,运行 ktutil 命令的用户必须对密钥表具有读取/写入权限。例如,如果密钥表由 root 拥有(通常如此),ktutil 必须作为 root 运行才能拥有适当权限。
命令
clear_list clear
清除当前密钥列表。
read_kt file rkt file
将密钥表读取到当前密钥列表。必须指定要读取的密钥表文件。
write_kt file wkt file
将当前密钥列表写入密钥表文件。必须制定要写入的密钥表文件。如果密钥表文件已存在,当前密钥列表会附加到现有密钥表文件。
add_entry number addent number
添加一项到当前密钥列表。使用密钥列表槽号指定项。
delete_entry number delent number
从当前密钥列表删除项。使用密钥列表槽号指定项。
list l
列出当前密钥列表。
list_request lr
列出可用请求(命令)。
quit exit q
退出实用程序。
示例
示例 1 从文件中删除主体
以下示例从 /etc/krb5/krb5.keytab 文件中删除 host/denver@ACME.com 主体。请注意,如果您要删除现有密钥表中的项,必须首先将密钥列表写入临时密钥表,然后使用该临时密钥表覆盖现有密钥表。这是因为 wkt 命令实际上会将当前密钥列表附加到现有密钥表,所以您不能使用它来覆盖密钥表。
example# /usr/krb5/bin/ktutil ktutil: rkt /etc/krb5/krb5.keytab
ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------
1 8 host/vail@ACME.COM
2 5 host/denver@ACME.COM
ktutil:delent 2
ktutil:l
slot KVNO Principal
---- ---- --------------------------------------
1 8 host/vail@ACME.COM
ktutil:wkt /tmp/krb5.keytab
ktutil:q
example# mv /tmp/krb5.keytab /etc/krb5/krb5.keytab
文件
/etc/krb5/krb5.keytab
Kerberos 客户机的密钥表文件
属性
有关下列属性的说明,请参见
阅读(23543) | 评论(0) | 转发(0) |