我正在尝试使用Jsch在Java中建立SSH连接.我已将"StrictHostKeyChecking"设置为yes.据我所知,必须事先获取服务器的主机密钥,并在第一次尝试连接服务器之前存储在hostkey文件中.如何获取服务器的HostKey.我的代码产生以下异常:
com.jcraft.jsch.JSchException:UnknownHostKey:ASY-PC RSA密钥指纹是22:fb:ee:fe:18:cd:aa:9a:9c:78:89:9f:b4:78:75:b4
如何与StrictHostKeyChecking建立连接是的.这是我的代码.
package sshexample;
import com.jcraft.jsch.*;
import java.io.*;
public class SSHexample
{
public static void main(String[] args)
{
String user = "user";
String password = "password";
String host = "192.168.100.103";
int port=22;
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "yes");
System.out.println("Establishing Connection...");
session.connect();
System.out.println("Connection established.");
System.out.println("Crating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
}catch(Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
您必须通过调用以下函数来提供KnownHostKeys文件
jsch.setKnownHosts(new FileInputStream(knownHostsFile));
此文件应该将所有已知主机的指纹分隔为新行.
例如
hostname,10.1.1.120, ssh-rsa AAAAC3NzaC1yc2EAAAADAQABAAABAQCi5b647581SwC0uUDQw1ENjKSz3rhJMRRZEgIjHylvF4fbuAEzj645YoAf9SItb51MhetFAJrq98jYsHpedSm3IoMG+aR/P1CjsBz1RtJKlfR2NfYDCZ7Dyx11P8FnJbwbYif/GeG0xEujekwF1pyL0tNPmf0H4/GPR4mwrv/llGlB3Lo3BzxrGtl4f4X/oSHDoo7FrQkDwqOfeSM++3vPPHxyVO5zhFJ5u9f7M/uuxUeHS+YS5JWAI7NLXKgbiM9dluGzZU/6Awo3ux4x5ojL+kf29JEVxK+o6GfW2bIW+LhgIGZNThnN5nHzBVfNNHvQ7KC5ic0h2z2gbVpwJr1h
Run Code Online (Sandbox Code Playgroud)
您可以使用任何sftp客户端从服务器获取此密钥,但是如果您使用的是linux或unix,则以下命令可能会有所帮助
ssh-keyscan -t rsa 10.1.1.120
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17548 次 |
最近记录: |