2011-04-06 4 views
5

Estoy usando herramientas ssh para hacer una conexión ssh a un servidor de la escuela, el ejemplo estoy usando un ejemplo de la fuente que hace una conexión ssh. Mi problema es que no quiero ninguna solicitud de entrada del usuario, sin embargo aparece un mensaje que dice que no se puede establecer la autenticidad del host y el usuario debe presionar "sí" para continuar, ¿cómo puedo codificarlo para que el programa acepte la solicitud? sí mismo.UserInfo pasando si clic en la función

Session session = jsch.getSession(user, host, 22); 
//username and host I can input directly into program so thats not a problem 
// username and password will be given via UserInfo interface. 
UserInfo ui = new MyUserInfo(); 

//this is the part that uses the UserInfo, which pulls up a prompt 
//how can I code the prompt to automatically choose yes?  
session.setUserInfo(ui); 
session.setPassword("password"); 
session.connect(); 
String command = JOptionPane.showInputDialog("Enter command", "set|grep SSH"); 

Respuesta

3

Usamos el código de abajo:

try { 
    session = jsch.getSession(user, host, port); 
} 
catch (JSchException e) { 
    throw new TransferException("Failed to open session - " + params, e); 
} 

session.setPassword(password); 

// Create UserInfo instance in order to support SFTP connection to any machine 
// without a key username and password will be given via UserInfo interface. 
UserInfo userInfo = new SftpUserInfo(); 
session.setUserInfo(userInfo); 

try { 
    session.connect(connectTimeout); 
} 
catch (JSchException e) { 
    throw new TransferException("Failed to connect to session - " + params, e); 
} 

boolean isSessionConnected = session.isConnected(); 

y lo más importante:

/** 
* Implements UserInfo instance in order to support SFTP connection to any machine without a key. 
*/ 
class SftpUserInfo implements UserInfo { 

    String password = null; 

    @Override 
    public String getPassphrase() { 
     return null; 
    } 

    @Override 
    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String passwd) { 
     password = passwd; 
    } 

    @Override 
    public boolean promptPassphrase(String message) { 
     return false; 
    } 

    @Override 
    public boolean promptPassword(String message) { 
     return false; 
    } 

    @Override 
    public boolean promptYesNo(String message) { 
     return true; 
    } 

    @Override 
    public void showMessage(String message) { 
    } 
} 
+0

trabajado gracias por la ayuda. – user541597

+0

@ user541597 eres bienvenido – Yaneeve

+0

@Yaneeve este programa no se deshace de la solicitud del usuario. Cuando ejecuto su código puedo ver que el usuario todavía tiene que hacer clic en entrar. Confirme que ha insertado este código para indicar que se puede hacer para conectar el servidor remoto, pero no ayudará a automatizar el proceso de autenticación. – MKod

Cuestiones relacionadas