我正在尝试使用JSch进行私钥配置。我已经使用PuTTYgen生成了公钥和私钥,但不确定如何处理这两个文件。
哪个密钥(公钥/私钥)需要传输到服务器?
哪个密钥(公钥/私钥)需要传输到服务器?
使用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>
首先,您需要将PuTTYgen生成的公钥注册到服务器上。请参阅准备使用公钥身份验证或(我的)设置SSH公钥身份验证。
最后,请查看如何在JSch中使用基于密钥的SSH通信?以获取有关在JSch中使用私钥的详细信息。
确保使用最新版本的JSch,因为旧版本不会本地支持.ppk格式。
StrictHostKeyChecking=no
。这样做会失去对MIMT攻击的保护! - Martin Prikryl