我们正在尝试使用JSCH从远程服务器下载文件。尝试时,已经在两台服务器之间建立了SFTP密钥交换]
SFP username@hostname
它成功连接,无需输入任何密码。但是在Java代码中,当我们尝试使用JSCH进行连接时会得到无效的私钥异常。
ERROR com.crer.log.debug - com.jcraft.jsch.JSchException: invalid privatekey:
我完成的代码如下所示
JSch jsch = new JSch(); String privateKey = location of the private key on client server jsch.addIdentity(privateKey); session = jsch.getSession(stpUser, sftpHost, sftpPort); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect();
编辑:
我正在使用的JSCH版本是0.1.54
私钥开始像
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ---- Subject: username Comment: "2048-bit rsa, username@host, Tue Dec 13 2016 19:25:22 \ -0500"
我什至尝试将私钥转换为openssh格式,但遇到一些异常
ssh-keygen -i -f id_rsa_2048_a > id_rsa_2048_a_openssh Private key -f is unreadable: Failed to open `-f': No such file or directory / Failed to read file `-f'. Error: Cannot determine the type of the key.
如果我从命令中删除-f则可以,但是我相信该文件未正确转换,就好像我使用该文件一样,我也遇到同样的异常。
这里的任何帮助都将非常有帮助。不知道出了什么问题。
我们正在尝试使用JSCH从远程服务器下载文件。当我们尝试成功连接SFP username @ hostname时,已经在两台服务器之间建立了SFTP密钥交换...
我最近在也使用JSCH的Jenkins ssh插件中遇到此问题。