2013-04-29 7 views
5

नहीं कहा जा रहा है, मैं एक परीक्षण SFTPServer लागू करने के लिए अपाचे मीना एसएसएचडी का उपयोग कर रहा हूं। मैं सरल पासवर्ड प्रमाणीकरण के लिए काम करने वाली चीजें प्राप्त करने में सक्षम हूं, हालांकि मैं पब्लिककी प्रमाणीकरण के लिए चीजों को कॉन्फ़िगर करने में सक्षम नहीं हूं। इस प्रकार मैं एक PublickeyAuthenticator इंटरफेस को लागू किया है,Apache Mina का उपयोग कर SFTP परीक्षण सर्वर के लिए PublicKey प्रमाणीकरण को लागू करने का प्रयास कर रहा है। हालांकि प्रमाणीकरण विधि को

public class SimpleKeyAuthenticator implements PublickeyAuthenticator { 

    @Override 
    public boolean authenticate(String username, PublicKey key, ServerSession session) { 
     System.out.println("In authenticate"); 
     return false; 
    } 

} 

मेरे सर्वर कार्यान्वयन इस प्रकार है,

... 
sshd = SshServer.setUpDefaultServer(); 


sshd.setPort(2222); 
//sshd.setPort(config.getSFTPPort()); 

//sshd.setKeyPairProvider(new 
sshd.setKeyPairProvider(new PEMGeneratorHostKeyProvider("hostkey.pem")); 
//sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider()); 

sshd.setPublickeyAuthenticator(new SimpleKeyAuthenticator()); 
sshd.setFileSystemFactory(new SimpleFileSystemFactory()); 

List<NamedFactory<UserAuth>> userAuthFactories = new ArrayList<NamedFactory<UserAuth>>(); 
userAuthFactories.add(new UserAuthNone.Factory()); 
sshd.setUserAuthFactories(userAuthFactories); 

sshd.setCommandFactory(new ScpCommandFactory()); 

List<NamedFactory<Command>> namedFactoryList = new ArrayList<NamedFactory<Command>>(); 

namedFactoryList.add(new SftpSubsystem.Factory()); 
sshd.setSubsystemFactories(namedFactoryList); 

sshd.setSessionFactory(new SimpleSessionFactory(handler)); 
try { 
    sshd.start(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

हालांकि जब मैं अपने SFTP क्लाइंट सब कुछ काम करता है का उपयोग कर एक फाइल प्राप्त करने की कोशिश। मैं उम्मीद करता हूं कि प्रमाणित विधि विफल हो जाएगी क्योंकि यह हमेशा झूठी रिटर्न देता है। मैंने KeyPairProvider को PEMGeneratorHostKeyProvider और SimpleGeneratorHostKeyProvider दोनों का उपयोग करने के लिए सेट करने का प्रयास किया है। मैंने अपने SimpleKeyAuthenticator वर्ग का उपयोग करने के लिए PublicKeyAuthenticator भी सेट किया है। ध्यान दें, जब मैं कंसोल आउटपुट को देखता हूं तो मुझे 'प्रमाणीकरण में' कभी नहीं दिखाई देता है, इसलिए मुझे पता है कि प्रमाणीकरण कभी नहीं कहा जा रहा है। क्या कोई मुझे बता सकता है कि मुझे क्या याद आया है? किसी भी मदद की सराहना की है।

सादर, मार्क

उत्तर

2

// रेखा से नीचे किसी भी मान्यता के बिना क्लाइंट प्रवेश कर देगा।

userAuthFactories.add (नया UserAuthNone.Factory());

आप इस तरह यह बदलना चाहिए:

userAuthFactories.add (नई UserAuthPublicKey.Factory());

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