【问题标题】:How to provide sftp password through Java如何通过 Java 提供 sftp 密码
【发布时间】:2015-09-24 18:34:42
【问题描述】:

我正在使用 JSCH API 从 java 调用 shell 命令。我正在尝试像这样调用 sftp 命令:

Channel channel = (ChannelShell)getSession().openChannel("shell");
channel.connect();
PrintStream out = new PrintStream(channel.getOutputStream());
out.println("#!/bin/bash");
out.println("sftp akumar@sindh");
out.flush();

在 Java 控制台上,我看到它正在连接到这个 sindh 服务器,然后它要求输入密码。

Connecting to sindh...
akuamr@sindh's password: 

我如何为其提供密码。我试过了

out.println("sftp akumar@sindh");
out.println("password123")

但这并不奏效。提前致谢。

【问题讨论】:

  • 使用端口转发而不是通过 shell 调用来破解它。

标签: java sftp jsch


【解决方案1】:

连接前需要在Session中设置密码:

    JSch jsch=new JSch();
    Session session = jsch.getSession("akumar", "sindh");
    session.setPort(22);
    session.setPassword("password123");
    session.connect();
    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
    channel.connect();

然后就可以使用通道执行sftp命令了。

【讨论】:

  • 我可以这样做,但问题是我连接到 sindh 但现在我想从另一台服务器获取文件。现在在这种情况下,我如何连接到另一台服务器并将文件获取到此(信德)服务器。
  • 那么你可能想使用 sshpass:out.println("sshpass -p pasword123 sftp akumar@sindh"); (而不是 "out.println("sftp akumar@sindh");")
  • -ksh: sshpass: not found [No such file or directory]
  • 然后你需要找到它在远程机器上的安装位置和是否安装。连接到机器并运行“which sshpass”。如果它返回路径,则需要提供完整路径。如果没有,您将需要使用“yum install sshpass”或“apt get install sshpass”安装它,具体取决于系统的用途。
猜你喜欢
  • 1970-01-01
  • 2013-02-19
  • 2015-04-24
  • 1970-01-01
  • 2012-12-10
  • 2015-05-30
  • 2014-01-02
  • 2017-11-29
  • 2019-12-23
相关资源
最近更新 更多