3

我已成功使用 JSch 库创建与服务器的 SSH 连接,但我无法弄清楚如何将子系统 NETCONF 添加到 SSH 连接。

手动执行时,与 sybsystem NETCONF 建立 SSH 连接的命令行是ssh -p 4444 nerconf@myserver -s netconf.

如何-s netconf使用 JSch 将选项添加到 SSH 连接?JSch 是否支持 NETCONF 的子系统?

4

2 回答 2

3

JSch 通常支持 SSH 子系统,但不实现任何特定于 NETCONF 的内容(这不是必需的)。

您需要做的就是进行以下调用(伪代码):

com.jcraft.jsch.JSch ssh = new com.jcraft.jsch.JSch();

com.jcraft.jsch.Session session = ssh.getSession(username, host, port);

session.setUserInfo(myUserInfo); // authentication

session.connect(connectTimeout);

// this opens up the proper subsystem for NETCONF
com.jcraft.jsch.ChannelSubsystem subsystem = (com.jcraft.jsch.ChannelSubsystem) session.openChannel("subsystem");
subsystem.setSubsystem("netconf");

// at this point you may get your streams
subsystem.getInputStream();
subsystem.getErrStream();
subsystem.getOutputStream();

subsystem.connect();

对于 NETCONF,子系统必须满足的唯一要求是正确的子系统名称。

于 2018-03-21T07:42:37.177 回答
-3

谢谢,普雷迪。

这对我来说是工作。netconf-hello 完成。

session = new JSch().getSession("username", "remote-ip", netconf-port);
session.setPassword("your-password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();

channel = (ChannelSubsystem) session.openChannel("subsystem"); //necessary
channel.setSubsystem("netconf"); //necessary
channel.connect();
System.out.println(channel.isConnected()); // debug use
System.out.println(session.isConnected()); // debug use


InputStream inputStream = channel.getInputStream(); // use this to read
OutputStream outputStream = channel.getOutputStream();
PrintStream printStream = new PrintStream(outputStream); // use this to send
于 2021-03-18T06:59:04.790 回答