java - com.jcraft.jsch.JSchException : remote port forwarding failed for listen port 19999

标签 java spring ssh jsch openssh

我已经设置了一个 java web 应用程序来执行此代码以进行反向 ssh

 FileInputStream hostFile = new FileInputStream(""+filePath);
 JSch jsch=new JSch();
 java.util.Properties config = new java.util.Properties(); 
 config.put("StrictHostKeyChecking", "no");
 jsch.setKnownHosts(hostFile);
 Session session=jsch.getSession("centos", "192.168.0.8", 22); //THIS WORKS
 session.setConfig(config);
 session.setPassword(password);
 session.connect();
 session.setPortForwardingR(19999,"192.168.0.8",22); //FAILS HERE!!

但是,最后一行失败并引发错误:com.jcraft.jsch.JSchException:监听端口 19999 的远程端口转发失败。

如果我从命令行运行该命令,它就会起作用。所以我认为 Jsch 库有缺陷

 ssh -R 19999:localhost:22 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0d6e686379627e4d3c343f233c3b35233d2335" rel="noreferrer noopener nofollow">[email protected]</a>

最佳答案

com.jcraft.jsch.JSchException: remote port forwarding failed for listen port 19999
...
If I run the command from the command line, it works

最简单的解释是,当您的 jsch session 请求端口转发时,远程服务器由于某种原因无法绑定(bind)到端口 19999。可能是因为其他一些进程绑定(bind)到该端口。可能是因为您的交互式命令之一仍在运行并绑定(bind)到该端口。

您可以在远程服务器上运行 netstat 以查看其他进程是否已在使用端口 19999。

关于java - com.jcraft.jsch.JSchException : remote port forwarding failed for listen port 19999,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26027206/

相关文章:

java - 多态性 vs 覆盖 vs 重载

Spring JPA 存储库查找所有不存在的内容

java - 通过键名锁定数据库编辑

macos - Travis CI中OS X上的SSHD

python - 带有远程ssh解释器的pycharm中的matplotlib

java - Maven3 - 仅调试主要源代码

java - 为什么JLS声明最大的int字面量是2147483648?

Java ServerSocket 连接限制?

ssh - Ansible给出ssh_exchange_identification错误

java - Grails 3.3 @Service 注释没有为抽象服务创建 bean?