Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jsch以编程方式进行身份验证?_Java_Ssh_Jsch - Fatal编程技术网

Java 如何使用jsch以编程方式进行身份验证?

Java 如何使用jsch以编程方式进行身份验证?,java,ssh,jsch,Java,Ssh,Jsch,我想通过sftp将文件上传到远程服务器。我正在使用Jsch库。下面的代码可以工作,但我始终必须通过输出控制台输入用户名和密码,即使我已经在会话对象中设置了这些值。我在Stack Overflow和Jsch示例中看到的每个示例都需要用户输入。有没有办法以编程方式传递密码?(我需要通过用户名/密码进行身份验证。我无法使用SSH密钥…) 您需要添加以下代码: jsch.addIdentity("<Key_path>"); // replace the key_path with actua

我想通过sftp将文件上传到远程服务器。我正在使用Jsch库。下面的代码可以工作,但我始终必须通过输出控制台输入用户名和密码,即使我已经在会话对象中设置了这些值。我在Stack Overflow和Jsch示例中看到的每个示例都需要用户输入。有没有办法以编程方式传递密码?(我需要通过用户名/密码进行身份验证。我无法使用SSH密钥…)


您需要添加以下代码:

jsch.addIdentity("<Key_path>"); // replace the key_path with actual value
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
jsch.addIdentity(“”;//用实际值替换键路径
setConfig(“首选身份验证”、“公钥、键盘交互、密码”);

谢谢

您可以使用用户名和密码设置工厂,并使用它创建会话:

    final DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
    factory.setHost(...);
    factory.setPort(...);
    factory.setUser(..);
    factory.setPassword(...);
    factory.setAllowUnknownKeys(true);
    final Session session = factory.getSession();

看看Spring Integration,他们已经将ftp抽象为一个消息网关,这是一个非常好的消息网关(此处不再详细介绍,因为它与问题没有直接关系)

您是否阅读了此主题:您提供的链接中的代码没有自动将凭据传递到主机服务器。用户仍然会被提示进行身份验证…如果您将“promptYesNo()”方法更改为返回false而不是true(在SftpUserInfo类中),我不确定您是否仍然需要回答此问题。长时间工作后,我发现了一些有用的东西。请点击链接“”。但是,在代码中直接传递密码时,应该小心。jar和示例代码将帮助您通过代码自动运行ssh命令,并且不会出现任何用户提示。
    final DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
    factory.setHost(...);
    factory.setPort(...);
    factory.setUser(..);
    factory.setPassword(...);
    factory.setAllowUnknownKeys(true);
    final Session session = factory.getSession();