【问题标题】:How to pass in the password in scp using Java ssh JSch and jcabi-ssh如何使用 Java ssh JSch 和 jcabi-ssh 在 scp 中传递密码
【发布时间】:2017-01-07 00:35:06
【问题描述】:

我需要执行以下命令:

scp -r ~/dataIn yatsuk@192.168.1.1:~/dataOut

在 ubuntu (16.04) 终端中,此命令可以正常工作。 yatsuk@192.168.1.1 是本地主机。

所以我用 jcabi 试试这段代码:

Shell shell = new SSHByPassword("192.168.1.1", 22, "yatsuk", "passw");
String stdout = new Shell.Plain(shell).exec("scp -r ~/dataIn yatsuk@192.168.1.1:~/dataOut");
System.out.println(stdout);

JSch 的这段代码:

JSch jsch = new JSch();
JSch.setConfig("StrictHostKeyChecking", "no");
Session session = jsch.getSession("yatsuk", 192.168.1.1, 22);
session.setPassword("passw");
session.connect();

Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("scp -r ~/dataIn yatsuk@192.168.1.1:~/dataOut");
((ChannelExec) channel).setErrStream(System.err);
channel.setOutputStream(System.out);
channel.setInputStream(System.in);
channel.connect();

while (!channel.isClosed()) {
    Thread.sleep(1000);
}
channel.disconnect();
session.disconnect();

两个都回我:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
lost connection

像“echo 1 > 1.txt”这样的简单命令可以完美运行。 也许是我不明白的地方?

【问题讨论】:

  • 那么如何在终端上使用scp192.168.1.1 进行身份验证?
  • @martin 我写“scp -r ~/dataIn yatsuk@192.168.1.1:~/dataOut” -> 输入 -> 输入密码 -> 输入
  • 好的,所以您的实际问题是如何传递密码,对吧?因为你显然需要那个。从一开始就应该在您的问题中提供这些信息。请编辑您的问题以明确您的要求。
  • @MartinPrikryl 谢谢,我正确的问题
  • 这不是重复的。 OP 没有编写 shell 脚本。因此,除了其他问题之外,还有其他可用选项。

标签: java ssh scp jsch jcabi


【解决方案1】:

自动执行交互式命令是糟糕设计的标志。总之……


scp 只会在交互式会话/终端中提示您输入密码。出于安全原因,它不会从普通标准输入中读取密码。

所以你必须启用交互式会话/终端。

在 JSch 中,您可以调用 .setPty

channel.setPty(true);
channel.connect();

类似问题:Use JSch sudo example and Channel.setPty for running sudo command on remote host.


另一种方法是使用expectsshpass 工具:How to pass password to scp?

【讨论】:

    【解决方案2】:

    问题是scp 在您的~/.ssh 中寻找密码,但在那里找不到。您应该再次将其提供给scp。像这样:How to pass password to scp?

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 2013-02-16
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 2015-11-05
      相关资源
      最近更新 更多