SSH守护进程(NIO2)不再启动了

时间:2016-04-13 03:50:29

标签: linux git ssh jetty gitblit

我有两台在jetty版本 9.2.11 下运行gitblit的VM。两者都在ubuntu服务器14.04中使用java 8(最新更新“1.8.0_77”)。

我注意到的唯一区别是内核版本

其中一个是

  

2.6.32-042stab111.12#1 SMP Thu Sep 17 11:38:20 MSK 2015 x86_64 x86_64 x86_64 GNU / Linux (我们称之为服务器1)

另一个是

  

2.6.32-042stab113.21#1 SMP Wed Mar 23 11:05:25 MSK 2016 x86_64 x86_64 x86_64 GNU / Linux (我们称之为服务器2)

在服务器1上,一切正常。

但是在服务器2上,gitblit的上下文没有启动和运行。

日志中的最后一条记录是:

2016-04-12 22:22:53 [INFO ] Federation passphrase is blank! This server can not be PULLED from.
2016-04-12 22:22:53 [INFO ] Fanout PubSub service is disabled.
2016-04-12 22:22:53 [INFO ] Git Daemon is listening on 0.0.0.0:9419

之后,jetty的服务失败,并且上下文不可用。该应用程序的状态永远为STARTING。

我尝试重新安装ssh服务器和客户端但没有成功。

有人可以帮我吗?

此致

1 个答案:

答案 0 :(得分:0)

我发布问题几天后,我找到了正确答案。

我按照下面的步骤检测问题的根本原因:

  1. 我已经下载了gitblit版本I的源代码。在这种情况下,版本1.7.1可用here
  2. 使用源代码我添加了一些快速日志(使用sysout),仅用于检查应用程序冻结的时间。我注意到问题出现在Apache MINA sshd的代码中。
  3. 我还下载了Apache MINA sshd的源代码进行调试。在这种情况下,我无法添加sysout,然后我选择在服务器上运行的Jetty中进行远程调试,如here所述。
  4. 当然它有点慢,但我注意到当sshd的代码在SecurityUtils.BouncyCastleRandom课程中调用SecureRandom.generateSeed(8)

    public BouncyCastleRandom() {
        ValidateUtils.checkTrue(isBouncyCastleRegistered(), "BouncyCastle not registered");
        this.random = new VMPCRandomGenerator();
        byte[] seed = new SecureRandom().generateSeed(8);
        this.random.addSeedMaterial(seed);
    }
    

    用于完全冻结的系统。

    经过长时间在互联网上搜索后,我发现了这个链接/博客https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/,当我输入命令cat /proc/sys/kernel/random/entropy_avail时,结果总是得到0(零)。

    我知道我的Linux是在host1plus托管的openvz下运行的VPS。基于此,我问VPS提供商检查我的VPS中的结果总是为零的原因。

    技术支持的答案是:

      

    我们为您的VPS启用了随机设备。请检查它是否适用,以及问题是否已解决。

    在更新之后,我的gitblit支持启动并运行状态。