【发布时间】:2014-12-23 14:34:29
【问题描述】:
大多数时候,我的 rsh 周期一般都可以,我们可以从 rshd 获得以下日志:
Aug 19 04:36:34 shmm500 authpriv.info in.rshd[21343]: connect from 172.17.0.40 (172.17.0.40)
Aug 19 04:36:34 shmm500 auth.info rshd[21344]: root@172.17.0.40 as root: cmd='echo 481'
虽然对于某些错误情况,rsh 可能会成功但有几秒钟的延迟,请参阅以下时间戳:
Aug 19 04:12:24 shmm500 authpriv.info in.rshd[17968]: connect from 172.17.0.40 (172.17.0.40)
Aug 19 04:12:27 shmm500 auth.info rshd[17972]: root@172.17.0.40 as root: cmd='echo 18'
我还发现,对于大多数正常情况,PID 增加了 1,而对于大多数错误情况,PID 增加了 4,请参阅上面日志中的 PID,似乎 rshd 分叉了一些进程。那么,您能否解释一下为什么 rshd 花了这几秒钟并且 PID 增加了。
我们的 rsh 是旧的 rsh,而不是 ssh,我不确定,但似乎 rsh 来自 netkit。这是一个带有busybox的嵌入式板,没有strace/pstack。 对于客户端,我只是 'rsh 172.17.0.8 pwd',而不是使用主机名。
【问题讨论】:
-
这通常是因为 in.rshd 试图进行反向 DNS 查找以获取远程系统的主机名,并且 DNS 请求超时。你可以在运行
rsh命令之前尝试strace -f -p pid-of-the-in.rshd-daemon,看看in.rshd进程在它暂停之前做了什么。 -
对于客户端,我只是'rsh 172.17.0.8 pwd',没有使用主机名。我不确定是否为我的案例启动了 DNS 进程。而且我的板上没有 strace。
-
延迟可能在服务器端而不是客户端。查看服务器上用户的
.rhosts文件中的主机列表。如果任何主机不在/etc/hosts中,则身份验证机制可能会进行 DNS 查找,这可能需要几秒钟,例如如果 DNS 服务器无法访问。 -
@Mark Plotnick:我检查过,不是我的情况。