通过SSH连接服务器时出现异常

我正在尝试在Java应用程序中使用SSH从Solaris服务器连接到外部服务器。在60分钟后,我们如何在验证用户身份时获取异常。我们如何减少将异常发生的时间降到5分钟左右。

连接到IP:PORT时出现问题 java.io.IOException:连接到IP:PORT时出现问题

time2和time3之间的时间差约为60分钟。我想减少这次。

请在下面找到我们正在使用的代码段。

try
{
    timeout = 1;
    if (connection == null)
    {
        //time1
        connection = new ch.ethz.ssh2.Connection(getIpAddress(),Integer.parseInt(getPort()));
        if (connection == null)
        {
            System.out.println("connection is null");
        }
        else
        {
            //time2
            connection.connect(null,timeout,0);
        }
    }
}
catch (Exception t)
{
    //time3
    System.out.println(t.getLocalizedMessage());
    System.out.println(t.toString());
}

Edit1:检查与SSH相关的配置文件后,我发现KeyRegenerationInterval的值为3600s。这对解决此问题有用吗?如果我将其值减小到30分钟或5分钟左右,将会有什么结果。

gongshaobo 回答:通过SSH连接服务器时出现异常

让我总结一下您的问题,如果出现问题,请纠正我。

  1. 您无法连接到SSH服务器。
  2. 60分钟后引发异常。

根据方法connect(ServerHostKeyVerifier,int,int)的“抛出”部分,我猜您可能由于错误的代理无法返回正确的HTTP响应而面临问题。使用直接Internet连接查看问题是否消失。

  

投掷:

     

java.io.IOException-如果发生任何问题,例如验证程序不接受服务器的主机密钥,或者在验证期间出现问题   初始加密设置(例如,服务器发送的签名为   错误)。

     

如果发生超时(connectTimeout或kexTimeout),则会抛出SocketTimeoutException。

     

如果连接已经成功连接,也可能引发异常(无论连接是否中断)   时间),而无需调用close()即可再次调用connect()   首先。

     

如果正在使用HTTP代理并且代理拒绝连接,则可能会引发HTTPProxyException,其中包含   代理返回的详细信息。如果代理有错误,但没有   返回正确的HTTP响应,然后抛出普通的IOException   代替。

,

尝试将“ kexTimeout”(用于建立完整连接的超时(非负数,以毫秒为单位)。零表示无超时。)设置为非零

connection.connect(null,timeout,timeout);

此外,在您的捕获中打印完整的堆栈跟踪以验证超时发生的位置

catch (Exception t) {
    //time3
    t.printStackTrace();
}
本文链接:https://www.f2er.com/3126445.html

大家都在问