Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1025
  • Last Modified:

JSCH libraries asking for Kerberos username and password

I am trying to download a file from a remote file server to my local. I pasted the code at the end of this question. I am getting command prompts as below -

Kerberos username [kalla]: USER1
Kerberos password for test: PWD

Open in new window


Even if I enter values for above queries, I am getting FileNotFound error. How can I fix it?

CODE:

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemOptions;
import org.apache.commons.vfs2.Selectors;
import org.apache.commons.vfs2.impl.StandardFileSystemManager;
import org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder;

public class GetMyFiles {
	static Properties props;

	public static void main(String[] args) {
		GetMyFiles getMyFiles = new GetMyFiles();
		String propertiesFilename = "C:\\Users\\USER1\\workspace\\Test\\src\\Config.properties";
		String fileToDownload = "FileToBeDownloaded.txt";
		getMyFiles.startFTP(propertiesFilename, fileToDownload);
	}

	public boolean startFTP(String propertiesFilename, String fileToDownload) {
		props = new Properties();
		StandardFileSystemManager manager = new StandardFileSystemManager();
		try {
			props.load(new FileInputStream(propertiesFilename));
			String serverAddress = props.getProperty("serverAddress").trim();
			String userId = props.getProperty("userId").trim();
			String password = props.getProperty("password").trim();
			String remoteDirectory = props.getProperty("remoteDirectory").trim();
			String localDirectory = props.getProperty("localDirectory").trim();
			// Initializes the file manager
			manager.init();
			// Setup our SFTP configuration
			FileSystemOptions opts = new FileSystemOptions();
			SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
			SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
			SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000);
			// Create the SFTP URI using the host name, userid, password, remote
			// path and file name
			String sftpUri = "sftp://" + userId + ":" + password + "@"
					+ serverAddress + "/" + remoteDirectory + fileToDownload;
			// Create local file object
			String filepath = localDirectory + fileToDownload;
			File file = new File(filepath);
			FileObject localFile = manager.resolveFile(file.getAbsolutePath());
			// Create remote file object
			FileObject remoteFile = manager.resolveFile(sftpUri, opts);
			// Copy local file to sftp server
			localFile.copyFrom(remoteFile, Selectors.SELECT_SELF);
			System.out.println("File download successful");
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		} finally {
			manager.close();
		}
		return true;
	}
}

Open in new window

0
Ravi Kalla
Asked:
Ravi Kalla
  • 2
1 Solution
 
Amitkumar PSr. ConsultantCommented:
Looking at the imports in the program, it seems program does not use JSCH library.

In case of JSCH, the imports should be like given below:

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

If you are looking for an example to download a file using SFTP protocol, refer below links.
1. http://www.jcraft.com/jsch/examples/Sftp.java.html (This is homepage for JSCH api developers and good example is already given)
2. http://kodehelp.com/java-program-for-downloading-file-from-sftp-server/ (Admin will not allow this, if it is violating a policy.)
0
 
Ravi KallaTechnology LeadAuthor Commented:
I am using WinSCP scripts and triggering them using Java.
0
 
Ravi KallaTechnology LeadAuthor Commented:
This is the solution that worked for me.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now