我最近添加了一个新的(客户端)服务器到我的NIS。 一个月左右,这工作得很好,但从今天起,我突然无法通过SSHlogin了。 一些其他服务(如IMAP)在同一台服务器上正常工作。 另一个NIS客户端似乎工作正常。
SSH会话成功login后立即终止:
some.nis.user@nismaster:~$ ssh faultyserv some.nis.usern@faultyserv's password: Connection to faultyserv closed by remote host. Connection to faultyserv closed.
/etc/log/auth.log包含:
Aug 31 12:42:22 faultyserv sshd[27909]: pam_unix(sshd:session): session opened for user some.nis.user by (uid=0) Aug 31 12:42:22 faultyserv sshd[27909]: fatal: login_get_lastlog: Cannot find account for uid 1234
如果我在/etc/ssh/sshd_config设置了UseLogin yes ,我可以login,但得到一个奇怪的shell:
I have no name!@faultyserv:~$ pwd /home/s/some.nis.user I have no name!@faultyserv:~$ sudo echo sudo: unknown uid 1234: who are you? I have no name!@faultyserv:~$ id some.nis.user uid=1234 gid=1975(some.nis.user) groups=4294967295,2177(somegroup),/*snip a long grouplist*/
我认为NIS有问题,但不知道如何解决这个问题,有没有人有一个想法?
我的/etc/nsswitch.conf包含(更多没有nis的条目):
passwd: files nis group: files nis shadow: files nis netgroup: nis
问题是passwd.byuid映射没有被传输。
在yppush passwd.byuid上运行yppush passwd.byuid给出了一个超时错误,并在faultyserv的/var/log/syslog生成了以下内容:
Sep 1 09:51:37 faultyserv ypserv[2038]: refuse to transfer passwd.byuid from <ip>, master is faultyserv.mydomain.com)
从服务器指定了不正确的主服务器:
# ypwhich -m services.byservicename nismaster group.bygid nismaster group.byname nismaster protocols.bynumber nismaster services.byname nismaster hosts.byname nismaster netgroup.byhost nismaster rpc.bynumber nismaster passwd.byuid faultyserv.mydomain.com netgroup nismaster ypservers nismaster shadow.byname faultyserv.mydomain.com passwd.byname nismaster hosts.byaddr nismaster protocols.byname nismaster rpc.byname nismaster netgroup.byuser nismaster netid.byname faultyserv.mydomain.com
在faultyserv上重新运行/usr/lib/yp/ypinit -s nismaster faultyserv修复了这个问题