【发布时间】:2016-04-07 16:29:01
【问题描述】:
我正在尝试使用Ganymed API 连接到远程服务器。
String SFTPHOST = "10.91.35.169";
String SFTPUSER = "amxadmin";
int SFTPPORT = 60022;
File keyfile = new File("/home/jbadmin/.ssh2/id_rsa_2048_a");
String keyfilePass = null; // will be ignored if not needed
Connection conn = new Connection(SFTPHOST);
conn.connect();
conn.authenticateWithPublicKey(SFTPUSER, keyfile, keyfilePass);
当我运行上面的代码时,我得到了下面的异常。
java.io.IOException: Publickey authentication failed.
at ch.ethz.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:331)
at ch.ethz.ssh2.Connection.authenticateWithPublicKey(Connection.java:499)
at ch.ethz.ssh2.Connection.authenticateWithPublicKey(Connection.java:546)
Caused by: java.io.IOException: Invalid PEM structure, '-----BEGIN...' missing
at ch.ethz.ssh2.crypto.PEMDecoder.parsePEM(PEMDecoder.java:141)
at ch.ethz.ssh2.crypto.PEMDecoder.decode(PEMDecoder.java:321)
at ch.ethz.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:240)
仔细阅读api文档后,我知道允许的密钥格式是.pem
当我尝试使用openssl 将基于SSH2 RSA 格式的私钥转换为.pem 格式时,出现以下错误。
[jbadmin@xxxxxxx .ssh2]$ openssl req -x509 -key /home/jbadmin/.ssh2/id_rsa_2048_a -nodes -days 365 -newkey rsa:2048 -out id_rsa_2048_a.pem
unable to load Private Key
139994671441736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
我的私钥:
[jbadmin@xxxxxx.ssh2]$ cat id_rsa_2048_a
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Subject: jbadmin
Comment: "2048-bit rsa, jbadmin@x01bicallapp1a, Tue Dec 29 2015 11:38:\
----------------------------
----------------------------
---- END SSH2 ENCRYPTED PRIVATE KEY ----
如果有其他方法可以使用openssl 或ssh-keygen-g3,请建议我
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。
-
已编辑问题并提供更多详细信息。
-
我看到 ssh-keygen-g3 是商业 ssh 包的一部分。您的基本问题可能是它以仅 Tectia 支持的格式生成密钥。尝试使用 OpenSSH 附带的
ssh-keygen程序。 -
特别是如果您有 SSH2 格式的密钥,请使用
ssh-keygen的-i(导入)选项,如其手册页所述。 -
很遗憾,
puttygen和ssh-keygen选项在我们的服务器上不可用。