2011-04-06 13 views
5

पर काम करने के लिए क्लिक करें मैं एक एसएसएच उपकरण का उपयोग कर रहा हूं ताकि स्कूल सर्वर से एसएसएच कनेक्शन बनाया जा सके, उदाहरण मैं स्रोत से एक उदाहरण का उपयोग कर रहा हूं जो एक एसएसएच कनेक्शन बनाता है। मेरी समस्या यह है कि मैं नहीं चाहता कि कोई उपयोगकर्ता इनपुट संकेत देता है, हालांकि एक प्रॉम्प्ट पॉप अप करता है कि मेजबान की प्रामाणिकता स्थापित नहीं की जा सकती है और उपयोगकर्ता को जारी रखने के लिए हाँ दबाए जाने की आवश्यकता है, मैं इसे प्रोग्राम के लिए प्रॉम्प्ट स्वीकार करने के लिए कैसे कोड कर सकता हूं अपने आप।उपयोगकर्ता इंफो जो हां पास कर रहा है

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(); 

और सबसे महत्वपूर्ण बात:

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"); 

उत्तर

3

हम नीचे कोड का उपयोग

/** 
* 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

काम में मदद के लिए धन्यवाद। – user541597

+0

@ user541597 आप का स्वागत है – Yaneeve

+0

@Yaneeve यह प्रोग्राम उपयोगकर्ता संकेत से छुटकारा नहीं पाता है। अपना कोड चलाते समय मैं देख सकता हूं कि उपयोगकर्ता को अभी भी एंटर पर क्लिक करना है। कृपया पुष्टि करें कि आपने यह कोड यह कहने के लिए रखा है कि यह दूरस्थ सर्वर से कनेक्ट करने के लिए किया जा सकता है, लेकिन यह प्रमाणीकरण प्रक्रिया को स्वचालित करने में मदद नहीं करेगा। – MKod

संबंधित मुद्दे