- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要执行以下命令:
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
这样的简单命令可以完美运行。也许我不明白什么?
最佳答案
自动执行交互式命令是糟糕设计的标志。无论如何...
<小时/>scp
只会在交互式 session /终端中提示您输入密码。出于安全原因,它不会从普通标准输入中读取密码。
因此您必须启用交互式 session /终端。
在 JSch 中,您可以通过调用 .setPty
来做到这一点:
channel.setPty(true);
channel.connect();
<小时/>
类似问题:Use JSch sudo example and Channel.setPty for running sudo command on remote host .
<小时/>另一种方法是使用 expect
或 sshpass
工具:How to pass password to scp?
关于java - 如何使用 Java ssh JSch 和 jcabi-ssh 将密码传递给 scp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232333/
我正在尝试按照 http://www.yegor256.com/2014/05/23/avoid-java-static-logger.html 的链接中所述使用 jcabi-log 进行记录. 我有
jcabi @RetryOnFailure 无法解析为类型。 我在我的 pom.xml 中添加了'编织'和 jcabi 依赖项 com.jcabi jcabi-mave
我目前正在开发 Bukkit 插件,并尝试实现从 github 获取配置文件。我正在尝试使用 JCabi-Github 来实现此目的。我实现了该库并正常工作,但每当我使用它时,它都会产生错误。我尝试使
本文整理了Java中com.jcabi.http.response.XmlResponse类的一些代码示例,展示了XmlResponse类的具体用法。这些代码示例主要来源于Github/Stackov
我正在注释我的函数 @Loggable jcabi 注释。它记录的语句不完整,它修剪行并只打印 .. 截断的数据。我想要打印整行。可以用这个注释来完成吗? @Loggable(Loggable.DEB
我正在尝试使用 jcabi 进行日志记录。据我了解,从 jcabi pom 文件继承我的 pom 进行设置会更容易,如 http://www.jcabi.com/parent/index.html 中
我正在尝试使用 jcabi-xml 将参数传递给 XSL 文件。代码很简单,我可以确认它执行: final XSL xsl = new XSLDocument(Main.class.getResour
我正在编写一个小应用程序,通过 SSH 连接到服务器列表并执行一些命令。我正在使用jcabi-ssh 。当我运行该程序时,jcabi-ssh 会向控制台输出如下行: [main] WARN com.j
我正在使用 NetBeans 编写一个 java 应用程序,它允许我获取 GitHub 用户存储库的 zip 文件。为此,我导入了一个外部 jar 库,jcabi library ,进入让我与 Git
本文整理了Java中com.jcabi.http.response.XmlResponse.()方法的一些代码示例,展示了XmlResponse.()的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中com.jcabi.http.response.XmlResponse.assertXPath()方法的一些代码示例,展示了XmlResponse.assertXPath()的具体
本文整理了Java中com.jcabi.http.response.XmlResponse.rel()方法的一些代码示例,展示了XmlResponse.rel()的具体用法。这些代码示例主要来源于Gi
本文整理了Java中com.jcabi.http.response.XmlResponse.xml()方法的一些代码示例,展示了XmlResponse.xml()的具体用法。这些代码示例主要来源于Gi
每当我尝试从命令提示符运行项目的 jar 文件时,我都会收到此错误。这是什么意思?我检查了 ValidatorBuilder 的 list ,它具有 jcabi-version 属性。任何帮助表示赞赏
当我使用 jcabi ssh 库执行 shell 命令时,当我执行以下操作时,我将如何或需要关闭 session ?当我在循环场景中配对时,我怀疑我的套接字用完了。 `Shell shell = ne
我厌倦了手动添加日志来调试我编写的每个方法。 我开始了解 jcabi 的 @Loggable 注释但我没有成功实现,非常感谢您的帮助。 下面是我试过的代码。 import com.jcabi.aspe
我正在使用 com.jcabi.aspects 的 @Cacheable 注释作为我项目中的缓存机制,我有一个场景需要从中刷新特定数据缓存而不是刷新整个缓存。怎么可能? 例如, import com.
我正在尝试使用 Maven 和 Jcabi-Aether 获取/解决一些 Artifact 。我想我已经准备好了大部分代码,但我很难弄清楚如何加载用户的 settings.xml 以便我可以将 Mav
我需要执行以下命令: scp -r ~/dataIn yatsuk@192.168.1.1:~/dataOut 在 Ubuntu (16.04) 终端中,此命令可以正常工作。yatsuk@192.16
我是一名优秀的程序员,十分优秀!