java - JSch 在 SSH 服务器上验证用户

标签 java jsch

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

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

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

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

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

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

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

最佳答案

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

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

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

<小时/>

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

只需连接,保留对 Session 实例的引用并在以后的所有传输中重复使用它。

关于java - JSch 在 SSH 服务器上验证用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814322/

相关文章:

java - 在Java中通过SSH隧道运行远程命令

java - 如何在 Java 中按 <TD> 日期对 HTML 元素进行排序并按 <A> 删除重复项?

java - Android Studio 错误 : eglSurfaceAttrib not implemented/Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f3f88dab6c0, 错误=EGL_SUCCESS

java - 上传和下载文件时使用内存泄漏(可能是因为使用 ChannelSftp.get( "file_name") )?

java - JSch ChannelExec 15 分钟后超时

java - 如何在Java中将OpenSSH私钥转换为RSA私钥?

java - 在 spring 中使用值注释更新读取的值

java - 如何从 Flux<DataBuffer> 主体获取数据

java - 如果 jquery ajax 调用出错应重定向到其他 jsp 页面

java - 断开连接后使用 SFTP 下载 InputStream 时 JSch "pipe closed"