我需要通过ssh连接远程计算机,然后与其端口进行telnet连接
(telnet localhost #port)
使用JAVA
我尝试了一些库(sshd,ganymed)并成功登录到远程计算机但无法登录到telnet。问题是库一次打开ssh连接并运行“one”命令。但telnet登录是交互式的。它要求用户名,然后我将其写入流(使用EOF),但永远挂在那里
我找不到合适的实施方式。有什么建议吗?
(使用linux)
答案 0 :(得分:1)
您可以尝试通过SSH隧道传输telnet,然后可以在运行java程序的原始主机上打开telnet会话。不知道是否/如何在Java中做到这一点。
在putty中,您可以在连接/ ssh / tunnels中配置隧道,在那里您可以输入远程端口(例如23)和本地未使用的端口(比方说2323)。然后,您可以在原始主机上打开到2323的telnet连接,通过ssh将其转发到远程主机端口23。
答案 1 :(得分:0)
你不能只调用Runtime.exec(“ssh telnet”),它应该直接进入你需要的telnet会话。在shell上试试吧。 Runtime.exec()返回一个Process对象,您可以使用该对象读取和写入生成的Process对象。
此外,如果您确实在可能导致问题的用户名后发送了EOF。您应该在用户名后发送CR或CR / LF。
答案 2 :(得分:0)
我为JTA-Java终端适配器制作了一个Ganymede SSH-2插件。非常简单。你可以自己运行它,或者如果你在列表中联系我,我可以提供给你。它已经在生产中运行了一年左右,非常稳定。