我在使用SSHJ时遇到异常.
这是我实现它的方式:
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
final SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("serverName");
try{
ssh.authPublickey("myUserId");
final Session session = ssh.startSession();
try{
final Command cmd = session.exec("net send myMachineName Hello!!!");
System.out.println(cmd.getOutputAsString());
System.out.println("\n Exit Status: "+cmd.getExitStatus());
}finally{
session.close();
}
}finally{
ssh.disconnect();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下异常:
Exception in thread "main" java.io.IOException: Could not load known_hosts
at net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528)
at SSHTEST.main(SSHTEST.java:25)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
小智 16
使用下面的代码
final SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(
new HostKeyVerifier() {
public boolean verify(String arg0, int arg1, PublicKey arg2) {
return true; // don't bother verifying
}
}
);
ssh.connect("LocalHost");
Run Code Online (Sandbox Code Playgroud)
删除对loadKnownHosts()方法的调用,默认情况下,erickson提到了〜/ .ssh/known_hosts下的检查(尽管你可以指定位置作为参数),并将其替换为:
ssh.addHostKeyVerifier("public-key-fingerprint");
Run Code Online (Sandbox Code Playgroud)
为了找出指纹是什么,扭曲的方式是连接没有那个声明 - 你会发现异常;-)