每次在JSch中连接通道时,“审计登录机器”都会显示登录

时间:2019-07-10 13:08:51

标签: java ssh jsch

我正在使用JSch从Brocade交换机上的远程服务器获取数据。创建一个新会话,并打开一个新类型为“ shell”的频道。我有几个命令可以从此服务器获取数据。我为每个命令创建了新通道,并在获取数据后断开了通道连接。

现在服务器上的“审核日志”中显示了我为每个命令创建的每个通道的新登录信息。

是否应该为每个创建的会话而不是每个连接的频道显示登录名?

public Session getSession(String hostName,
                                  String username,
                                  String password,
                                  Integer port) throws Exception {
    Session session = null;
    try {
        JSch jsch = new JSch();
        if (port == null) {
            port = 22;
        }
        session = jsch.getSession(username, hostName, port);
        session.setPassword(password);
        session.setConfig("max_input_buffer_size", Integer.toString(100 * 1024 * 1024));
        session.setConfig("StrictHostKeyChecking", "no");
        session.setConfig("UserKnownHostsFile", "/dev/null");
     session.connect(15 * 1000);
    } catch (Exception e) {
        if (session != null) {
            session.disconnect();
        }
        throw new Exception("Error in connecting to: " + hostName, e);
    }
    return session;
}

private Channel getChannel(Session session,String type) throws Exception {
    if (session == null || !session.isConnected()) {
       session = getSession();
    }
    Channel channel = null;
    try {
        channel = session.openChannel(type);
    } catch (Exception e) {
        throw e;
    }
    channel.setInputStream(null);
    return channel;
}

1 个答案:

答案 0 :(得分:0)

SSH通道不会创建新的登录名。

但是它将创建一个新的Shell会话。也许您的“审核日志”将shell会话记录为新登录。对于普通的SSH客户端,通常每次登录仅创建一个Shell会话。因此,很容易使这两件事不匹配。