2012-06-06 35 views
5

Tôi đang cố gắng viết chương trình java sẽ kết nối qua ssh và thực hiện một số nội dung trên máy chủ tại cơ quan (redhat) linux). Hộp của tôi là cửa sổ. Tôi đọc về sshj và tôi đang cố gắng lấy ví dụ để làm việc. Tôi đã làm việc thông qua hầu hết các phụ thuộc và bây giờ tôi có một lỗi đối phó với khóa công khai/tư nhân và tiếc là tôi không biết nhiều ở đó (hoặc, đó là một cơn bão hoàn hảo của newbie-ness!). Dưới đây là các lỗi:đấu tranh với ví dụ sshj ('exec'): Không thể xác minh khóa máy chủ `ssh-rsa` bằng dấu vân tay

ngoại lệ trong chủ đề net.schmizz.sshj.transport.TransportException "chính": [HOST_KEY_NOT_VERIFIABLE] Không thể xác minh ssh-rsa chính chủ với dấu vân tay 5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d cho myserver trên cổng 22

Dưới đây là các mã:

import net.schmizz.sshj.SSHClient; 
import net.schmizz.sshj.common.IOUtils; 
import net.schmizz.sshj.connection.channel.direct.Session; 
import net.schmizz.sshj.connection.channel.direct.Session.Command; 

import java.io.IOException; 
import java.util.concurrent.TimeUnit; 

/** This examples demonstrates how a remote command can be executed. */ 
public class sshBuddy { 

    public static void main(String... args) 
      throws IOException { 
     final SSHClient ssh = new SSHClient(); 
     ssh.loadKnownHosts(); 
     //ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d"); 

     ssh.connect("myserver"); 
     try { 
      ssh.authPublickey(System.getProperty("myusername")); 
      final Session session = ssh.startSession(); 
      try { 
       final Command cmd = session.exec("ping -c 1 google.com"); 
       System.out.println(IOUtils.readFully(cmd.getInputStream()).toString()); 
       cmd.join(5, TimeUnit.SECONDS); 
       System.out.println("\n** exit status: " + cmd.getExitStatus()); 
      } finally { 
       session.close(); 
      } 
     } finally { 
      ssh.disconnect(); 
     } 
    } 

} 

Mọi trợ giúp sẽ được đánh giá cao, cảm ơn!

Trả lời

1

thử này

public class sshBuddy { 

    public static void main(String... args) 
      throws IOException { 
     final SSHClient ssh = new SSHClient(); 
     //ssh.loadKnownHosts(); 
     ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d"); 

     ssh.connect("myserver"); 
     try { 
      ssh.authPublickey(System.getProperty("myusername")); 
      final Session session = ssh.startSession(); 
      try { 
       final Command cmd = session.exec("ping -c 1 google.com"); 
       System.out.println(IOUtils.readFully(cmd.getInputStream()).toString()); 
       cmd.join(5, TimeUnit.SECONDS); 
       System.out.println("\n** exit status: " + cmd.getExitStatus()); 
      } finally { 
       session.close(); 
      } 
     } finally { 
      ssh.disconnect(); 
     } 
    } 
} 

Gỡ bỏ chú addHostKeyVerifier và bình luận loadKnownHosts. Nó sẽ hoạt động.

8

chỉ cố gắng này

ssh.addHostKeyVerifier(new PromiscuousVerifier()); 

này nên làm việc

+2

Đây không phải là một giải pháp. Về cơ bản bạn đang nói để vô hiệu hoá xác minh khóa máy chủ như vậy. – Matiss

Các vấn đề liên quan