java.io.IOException:登录失败:vfs2的未知用户名或密码错误

时间:2014-09-04 16:34:35

标签: java sftp vfs

前几天我使用vfs2进行简单的连接和文件上传工作代码。突然,该方法停止工作,我开始收到:

java.io.IOException: Logon failure: unknown user name or bad password

我尝试了三个不同的用户,我可以使用它来访问sftp服务器,但没有运气。故意拼错我的密码或用户名,我收到一个不同的错误:

org.apache.commons.vfs2.FileSystemException: Could not connect to SFTP server
Caused by: org.apache.commons.vfs2.FileSystemException: Could not connect to SFTP server
Caused by: com.jcraft.jsch.JSchException: Auth fail

不确定一天有多少程序可以正常运行以登录另一个失败。我没有改变任何事情。我的方法代码:

public static void encryptFile(File input, File output)
{
    FileSystemManager fsManager;
    try {

        /*SftpFileSystemConfigBuilder builder = SftpFileSystemConfigBuilder.getInstance();
        FileSystemOptions fsOptions = new FileSystemOptions();
        builder.getKnownHosts(fsOptions);
        builder.setUserDirIsRoot(fsOptions, false);
        builder.setTimeout(fsOptions, 5000);*/
        FileSystemOptions fsOptions = new FileSystemOptions();
        SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(fsOptions, "no");

        fsManager = VFS.getManager();
        String uri = "sftp://" + Env.getFtpUserEncrypt() + ":" + 
           Env.getFtpPassEncrypt() + "@" + Env.getFtpUrlEncrypt() + "/app/" + input.getName();

        FileObject dest = fsManager.resolveFile(uri, fsOptions);    
        String filePath = input.getCanonicalPath();

        FileObject orig = fsManager.resolveFile(filePath, fsOptions);
        dest.copyFrom(orig, Selectors.SELECT_SELF);;

    } catch (Exception e)
    {
        StringWriter errors = new StringWriter();
        e.printStackTrace(new PrintWriter(errors));
        String temp = errors.toString();
        log.error("Error putting file onto ftp: " + temp);
        return;
    }
}

编辑:Env只是一个用于定义我的凭据变量的类。在这种情况下,Env用于定义连接的用户名,密码和URL。

最有可能导致此问题的是什么?这是一个错误,还是我的身份验证确实错了?

1 个答案:

答案 0 :(得分:0)

我尝试使用相同的凭据连接到不同的服务器,这可以连接没有问题。然后我重新尝试了我遇到问题的服务器,这似乎以某种方式"唤醒它"没有给定的错误连接。不知道为什么这有助于纠正错误,但它仍然是一个解决方法。