使用Java中的ssh2连接到由RSA SecurID保护的linux系统
我想创建一个从Windows系统到Linux机器的连接,该机器使用RSA令牌密码进行身份验证,我想运行shell命令并从Java代码获得输出。使用putty登录到该Linux系统时,有以下步骤:使用Java中的ssh2连接到由RSA SecurID保护的linux系统,java,linux,ssh,sftp,securid,Java,Linux,Ssh,Sftp,Securid,我想创建一个从Windows系统到Linux机器的连接,该机器使用RSA令牌密码进行身份验证,我想运行shell命令并从Java代码获得输出。使用putty登录到该Linux系统时,有以下步骤: 输入IP和端口并连接 在PuTTY终端中输入用户名,询问“登录身份:” 在输入RSA SecurID的位置输入密码 我已经尝试使用Jsch包进行连接,但它没有连接。我还尝试了jcabi-ssh(),它是Jsch的包装器。他们似乎都不为我工作 编辑:我使用Jsch包使用了以下代码 Stri
Jsch
包进行连接,但它没有连接。我还尝试了jcabi-ssh
(),它是Jsch
的包装器。他们似乎都不为我工作
编辑:我使用Jsch
包使用了以下代码
String host = "xxx";
String user = "xxx";
String password;
Scanner scanner = new Scanner (System.in);
System.out.println("Enter rsa token: ");
password = scanner.nextLine();
Session session = jsch.getSession(user, host, 2222);
session.setPassword(password);
session.connect();
在它之后,我得到以下错误:
com.jcraft.jsch.JSchException:UnknownHostKey:myservername。RSA密钥指纹是ba:2b:70:2f:4f:fa:f6:20:31:56:e0:e8:8b:16:46:c9
我找到了一个解决方案,有人说包含这段将StrictHostKeyChecking设置为“否”的代码:
然后我的错误变为:
com.jcraft.jsch.JSchException: Auth cancel
尝试使用另一个
jcabi-ssh
实现也会得到类似的结果。您需要的是一个对话框,它将在该时间点接受密码短语并建立连接。以下是您需要集成RSA SecureId的内容—“它无法连接”-即步骤1失败?因此,您没有获得RSA令牌?或者是TCP还是TCP连接已建立,但某些协商失败?您是否收到任何错误消息或异常?@Rup检查编辑记录。听起来它没有可以使用的身份验证方法。可能RSA令牌值的内部代码与密码不同?我认为最好的办法是在JSch中找到生成取消的代码,并找出原因,如果是因为找不到通用的身份验证方法,则检查客户端和服务器都知道哪些值。我快速查看了SourceForge中的JSch代码-令人恼火的是,我无法链接到任何源浏览器,但这是一个很好的例子,相关的部分没有改变。这看起来像是由JschAuthCancelException触发的,因此如果您可以让调试器中断它,这将帮助您跟踪它的来源:它由无法解密的公钥触发,或者由没有密码的密码验证触发,或者如果它无法显示密码提示(或者如果用户取消交互式密码提示)。该示例显然适用于私钥身份验证,而非SecureId,并且他已经有了想要使用的值-他不需要对话框。在您试图强调的代码中,他还应该做其他特定的事情吗?显然,您必须修改该代码。请使用com.rsa.authagent.authapi.AuthAgentException com.rsa.authagent。authapi.AuthSession com.rsa.authagent.authapi.AuthSessionFactory。您可以通过谷歌搜索使用rsa authagent的示例。
com.jcraft.jsch.JSchException: Auth cancel