9

上周我在使用 RPC,并且可以很好地运行我的 RPC 服务器程序。但是,今天我尝试再次启动它,但出现此错误:

无法注册服务:RPC:身份验证错误;为什么 = 客户端凭据太弱无法注册(X_PROG、X_VERS、udp)

谁能告诉我这个错误的原因是什么?

rpcinfo 给了我这个:

   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /run/rpcbind.sock      portmapper superuser
    100000    3    local     /run/rpcbind.sock      portmapper superuser

奇怪的是,过去一周我什至没有使用过这台电脑。有没有应该运行的服务?

希望你能帮助我。格兹·斯特凡

4

9 回答 9

14

此错误与 rpcbind 相关,因此您应该像这样停止服务端口映射:

sudo -i service portmap stop

然后

sudo -i rpcbind -i -w

最后启动服务端口图:

sudo -i service portmap start
于 2012-12-30T01:29:20.093 回答
4

我意识到这是一个较旧的线程,但谷歌发现它在前 3 个结果中,人们仍在发现 nfs 服务错误。甚至 Red Hat 的 RHN 修复程序也不起作用。

截至 2013 年 12 月,在 RHEL 6.4 (x64) 上并在 2013 年 11 月进行了修补,唯一的解决方案是更改 tcp_wrapper 配置文件的权限。因为我们对盒子进行了相当严格的保护,所以我们在 /etc/hosts.allow 和 /etc/hosts.deny 上拥有 640 的权限,这两个文件都归 root:root 所有。我们确实尝试给这些文件不同的组所有权在 nfs 启动时没有解决问题。

一旦我们将 perms 放回“开箱即用”(644),nfs (rquotad) 服务就会按预期启动。或者,如果我们将 hosts.allow/deny 完全移开。

弄清楚这是多么痛苦。如果我早点查看,selinux 日志可能会有所帮助。

现在,如果我们让 selinux 处于强制模式,这可能不是问题。我仍然需要测试这个理论。

祝你好运。

于 2013-12-10T20:24:08.373 回答
3

使更改在 Ubuntu12.04 上持久化(假设使用 -i 运行 rpcbind 的安全隐患无关紧要):

echo 'OPTIONS="-w -i"' | sudo tee /etc/default/rpcbind
sudo service portmap restart
于 2013-04-07T15:09:10.157 回答
2

另一个解决方案:CentOS 7.3 版

除了 rpcbind,我还必须在 /etc/hosts.allow 中允许 mountd:

rpcbind : ALL : allow
mountd : ALL : allow

这最终让我不仅可以执行 rpcinfo,还可以执行 showmount 和 mount。

于 2017-06-21T16:58:26.027 回答
0

在 Debian Squeeze 到 Wheezy 升级中,到目前为止,这里介绍的解决方案都没有对我有用。

在我的情况下,我唯一要做的就是用“rpcbind”替换 /etc/hosts.allow 中所有出现的“portmapper”(或“portmap”,不再确定)。就这些。(否则 ypbind 无法通过 localhost 连接到 rpcbind。)

于 2013-06-18T14:45:12.550 回答
0

我认为值得一提的是,如果您看到以下错误:

0-rpc-service: Could not register with portmap

它可能与 hosts.allow 和 hosts.deny 文件集有关,并且在 hosts.allow 文件中缺少对 localhost 的权限。

我在使用 GlusterFS 设置 NFS 时遇到了这种问题。

在我的 /etc/hosts.allow 文件中,我添加了:

ALL: 127.0.0.1 : ALLOW

使用 portmap 注册服务的问题消失了,一切正常。

注意:使用 GlusterFS 记得重启 Glusterd 服务

/etc/init.d/glusterd restart
于 2014-08-13T20:30:51.430 回答
0

如果使用 iptables 并且它阻止 localhost 的 UDP 连接,也会发生这种情况。今天碰到这个。停止 iptables,连接开始工作。

您将需要找出破坏它的规则。

于 2014-01-06T14:12:12.727 回答
0

I was receiving an error like so on rhel7:

ypserv: Cannot register service: RPC: Authentication error; why = Client credential too weak  

when starting ypbind. I tried everything including the '-i' to rpcbind above. In the end as XTaran mentioned modifying /etc/hosts. allow adding this line:

rpcbind: 127.0.0.1 

worked for me.

于 2014-11-28T17:29:23.833 回答
0

FWIW,这是一个“替代”解决方案。

  1. 检查 /etc/hosts.deny 文件。它应该这样说:
  2. rpcbind mountd nfsd statd lockd rquotad : ALL
  3. 确保此文件中的最后一行是空白的。
  4. 检查 /etc/hosts.allow 文件。它应该这样说:
  5. rpcbind mountd nfsd statd lockd rquotad:127.0.0.1 192.168.1.100
  6. 确保此文件中的最后一行是空白的。

“技巧”(对我来说)是文件中的最后一行空白。

于 2018-04-06T00:32:23.077 回答