【问题标题】:JSch authenticate user on SSH serverJSch 在 SSH 服务器上对用户进行身份验证
【发布时间】:2015-08-05 17:36:43
【问题描述】:

我正在使用 JSch 编写应用程序。此应用程序应该对用户进行一次身份验证,然后将用户名和密码存储在该会话中。 因此,我需要连接到服务器一次以进行身份​​验证。 我以后只会从服务器读取文件,所以只需要 SFTP 权限。

从现在开始,我将通过读取预定义文件的内容来验证用户。但这对性能不利,文件必须存在于服务器上。还有其他更好的解决方案吗?

编辑: 我会尝试在这里澄清我的问题,所以如果你不明白我想要做什么,请继续阅读。

我想要什么:我有一个应用程序,你必须首先登录。当用户登录时,用户名和密码存储在用户会话中,并将用于所有请求。登录后,用户可以从服务器读取一些文件。使用之前保存的凭据通过 SFTP 访问这些文件。

问题:我不知道如何验证用户凭据,只要他登录到应用程序,而不访问服务器上的文件。

我的解决方法:我尝试解决问题,在登录期间从服务器读取预定义的小文件,并在可以读取文件时接受凭据。

我的问题:我想知道,是否有更好的解决方案,例如仅对服务器上的用户进行身份验证的功能,因此我可以确定输入的凭据是正确的。或者,更好的是,我可以在用户登录时打开与服务器的连接,并将此连接用于进一步的请求,而无需发送凭据。

【问题讨论】:

  • @MartinPrikryl 我编辑了我的问题,希望现在更清楚了。我针对 SSH 服务器对用户进行身份验证。 “只需要 SFTP 权限”:用户只需要读取文件,不要在 shell 中执行任何命令或其他任何东西

标签: java jsch


【解决方案1】:

只需创建一个新的Session 并调用.connect()

Session session = jsch.getSession("username", "host");
session.setPassword("password");
session.connect();
session.disconnect();

您必须已准备好此代码才能进行转移。


无论如何,更好的解决方案肯定是保持会话打开。

只需连接,保留对Session 实例的引用,并将其重复用于所有未来传输。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2018-07-12
    • 2021-07-26
    • 2016-07-29
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多