Java库用于交互式SSH会话(以便能够执行多部分命令)?

5
我目前在Java中使用SSH库,但似乎缺少执行多部分命令的能力(例如我执行passwd user时,没有办法再输入密码两次以更改它,因为每次输入命令时都会启动新会话)。 我非常需要这个功能来支持我当前正在开发的应用程序,看起来有很多Java的SSH库可供选择,但我不确定哪个可以允许此操作,因为其中一些似乎不行。

任何关于好的库的建议都将不胜感激。

对于巡逻关闭者:如果您要尝试关闭此问题,请至少引用一个与我的问题相同的线程,而不仅仅是一个通用的“什么是好的Java ssh库”问题。


可能是Java的SSH库的重复问题。 - Brian Roach
3
谢谢你试图通过引用一个不同的线程来关闭我的帖子,但请阅读你引用的那个线程,你会发现它没有指定我所问的相同参数。我知道那个线程,它没有问到我的具体问题。 - Rick
3个回答

2

我非常成功地使用了Ganymede SSH-2库。然而,密码提示框不应该出现在应用程序中,它应该是连接设置协商的一部分。


谢谢,我会看一下Ganymede(Ganymed?),但我认为你误读了我的意思。这是一个示例命令,我试图使用passwd user更改用户密码,而不是输入密码进行连接。 - Rick
1
为参考:由于我在找到该项目的主页方面遇到了一些麻烦,以下是有关编程的内容的翻译链接:http://www.cleondris.ch/opensource/ssh2/。 - Rick
@Rick 好的,我了解了。祝你好运。 - user207421

0

0

你可以使用以下命令运行交互式命令,如“passwd 用户”:

session.getStdin().write() refer following snipped 
connection = new Connection( host,port );
            connection.connect();
            // Authenticate
   boolean result = connection.authenticateWithPassword( username, password );
 Session session = connection.openSession();
session.requestPTY("bash");
session.execCommand( "passwd testuser" );
session.getStdin().write("newPassword\n".getBytes()); // //for new password
session.getStdin().write("newPassword\n".getBytes()); //for retype new password

 System.out.println( "ExitCode: " + session.getExitStatus() );
session.close();
connection.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接