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

标签 java ssh jsch

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

    JSch jsch = new JSch();
    ChannelSftp sftpChannel;
    Session session;
    Channel channel;
    OutputStream os;

    try {

        session = jsch.getSession("myUsername", "myHost", 22);
        session.setPassword("myPassword");
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();

        channel = session.openChannel("sftp");
        channel.connect();
        sftpChannel = (ChannelSftp) channel;
        os = sftpChannel.getOutputStream();

    } catch (Exception e) {
    }

最佳答案

您需要添加以下代码:

jsch.addIdentity("<Key_path>"); // replace the key_path with actual value
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");

谢谢

关于java - 如何使用 jsch 以编程方式进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835756/

相关文章:

java - 恢复文件传输中途失败的文件传输

java - 如何使用SFTP协议(protocol)多次尝试上传?

java - 使用证书颁发机构设置双向 ssl

java - Eclipse Plugin IDE 在处理过程中卡住/不刷新

java - Java中同时输出节点、左子节点和右子节点

python - 执行一个命令后 paramiko ssh channel 关闭 - Python

linux - 使用 ssh 连接到 EC2 的多个实例

java - 有没有更好的方法在 Matcher 中使用 group() 提取名称-值?

windows - BATCH文件可通过SSH连接到Linux。如何?

java - 通过 JSch shell channel 向服务器发送命令