当前位置: 首页 > 面试题库 >

通过Java的SFTP连接,要求进行奇怪的身份验证

茹正祥
2023-03-14
问题内容

因此,我正在编写一个小程序,该程序需要通过SFTP连接到远程服务器,提取文件,然后处理该文件。我在这里遇到了一些有关JSch的答案,它看起来非常适合这项任务。到目前为止,它易于使用,并且已经可以正常工作,我想解决的一件小事。我正在使用以下代码连接并拉下文件:

    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("username", "127.0.0.1", 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("password");
        session.connect();

        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftpChannel = (ChannelSftp) channel;
        sftpChannel.cd(REMOTE_FTP_DIR);
        sftpChannel.lcd(INCOMING_DIR);
        sftpChannel.get(TMP_FILE, TMP_FILE);
        sftpChannel.exit();
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();
    } catch (SftpException e) {
        e.printStackTrace();
    }

这样就可以了,我得到了文件。我在Linux服务器上运行此代码,当我运行代码时,JSch要求我提供我的Kerberos用户名和密码。看起来像:

Kerberos用户名[george]:

george的Kerberos密码:

我只是按Enter键输入了两个问题,然后该程序似乎可以继续进行,没有任何问题。但是,我需要通过cron任务使此代码自动化,因此我不希望它暂停程序来问我这两个问题。有没有我不提供的东西,所以它不会问这个?我需要做些什么来阻止它问?希望有人有一些想法。谢谢。


问题答案:

以为我会在这里发布答案,以防万一其他人最终遇到类似问题。原来,我缺少了使一切都不同的一段代码。我只需要添加

session.setConfig("PreferredAuthentications", 
                  "publickey,keyboard-interactive,password");

之前

session.connect();

现在一切正常。



 类似资料:
  • 我只是在两个问题中输入,然后程序似乎继续没有问题。但是,我需要这些代码通过cron任务实现自动化,所以我不希望它暂停程序来问我这两个问题。是不是有什么东西我不提供给它,这样它就不会问这个了?我需要做些什么来阻止它的追问?希望有人有一些想法。多谢了。

  • 我正在运行带有公开WebSocketendpoint的服务器。下面是我的: 问题是如何使用或或查询参数实现建立WS连接的身份验证? 更好的选择是避免使用Spring Security。 多谢了。

  • 问题内容: 如何连接到Java中需要身份验证的远程URL。我试图找到一种方法来修改以下代码,以便能够以编程方式提供用户名/密码,从而不会抛出401。 问题答案: 你可以为http请求设置默认的身份验证器,如下所示: 另外,如果你需要更多的灵活性,可以签出Apache HttpClient,它将为你提供更多的身份验证选项(以及会话支持等)。

  • 问题: 我们有一个spring的基于MVC的RESTful API,它包含敏感信息。API应该是安全的,但是不希望在每个请求中发送用户的凭据(User/Pass组合)。根据REST指南(和内部业务需求),服务器必须保持无状态。API将由另一台服务器以混搭方式使用。 要求: > 客户端请求使用凭据(不受保护的URL);服务器返回一个安全令牌,该令牌包含足够的信息,供服务器验证未来的请求并保持无状态。

  • 当我通过登录路径中定义的登录表单登录时,我的防火墙配置工作正常。我想要的是登录时不查看或进入登录路径,而是直接发送用户名和密码参数来检查路径。 当我用用户名和密码向check_路径发出post请求时,symfony2似乎需要一个cookie,它是由smyfony2自己在login_路径中创建的。 有没有办法通过发送用户名和密码直接检查路径来登录?

  • 问题内容: 在(带有)中,我尝试使用以下语句通过基本身份验证访问我的网页: 但是Google Chrome浏览器在控制台中向我发出以下警告: [弃用]其URL包含嵌入式凭据(例如https://user:pass@host/)的子资源请求被阻止。有关更多详细信息,请参见https://www.chromestatus.com/feature/5669008342777856。 在标记的链接中提到该