我正在使用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;
}
答案 0 :(得分:0)
SSH通道不会创建新的登录名。
但是它将创建一个新的Shell会话。也许您的“审核日志”将shell会话记录为新登录。对于普通的SSH客户端,通常每次登录仅创建一个Shell会话。因此,很容易使这两件事不匹配。