【发布时间】:2015-04-11 02:59:43
【问题描述】:
我正在尝试将 JSch 与私钥配置一起使用。我已经使用 PuTTYgen 生成了公钥和私钥,但不确定如何处理这两个文件。
哪个密钥(公钥/私钥)需要传输到服务器?
【问题讨论】:
标签: putty jsch private-key public-key
我正在尝试将 JSch 与私钥配置一起使用。我已经使用 PuTTYgen 生成了公钥和私钥,但不确定如何处理这两个文件。
哪个密钥(公钥/私钥)需要传输到服务器?
【问题讨论】:
标签: putty jsch private-key public-key
首先,您需要在服务器上注册 PuTTYgen 生成的 public 密钥。请参阅Getting ready for public key authentication 或(我的)Set up SSH public key authentication。
最后参见Can we use JSch for SSH key-based communication?,了解在 JSch 中使用 private 密钥的详细信息。
确保您使用最新版本的 JSch,因为旧版本本身不支持 .ppk 格式。
【讨论】:
使用 PuTTy 私钥 (.ppk) 进行连接的代码片段
JSch jsch=new JSch();
jsch.setKnownHosts("~\.ssh\know_hosts");
jsch.addIdentity("~\sshkey.ppk");
Session session=jsch.getSession("ec2-user", "54.12.11.90", 22);
session.setConfig("PreferredAuthentications", "publickey");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);
channel.setOutputStream(System.out);
channel.connect(3*1000);
用过0.1.54版本的Jsch
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
【讨论】:
StrictHostKeyChecking=no。这样做,您将失去对MIMT attacks 的保护!