问题标签 [sshj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
325 浏览

java - “新 SSHClient.authPublickey(String,KeyProvider)”方法中的 NoClassDefFoundError

我正在尝试将我的本地主机与 sshj 库提供的类连接起来,用于教育目的。所以我编写了上面的代码,但方法存在问题new SSHClient.authPublickey(String userName,KeyProvider... keys)。我跟踪了我的代码的每一行,不仅仅是我也跟踪的sshj库,但我不能找到任何有用的东西。我在下面的项目中提供错误代码、从我的 IDE( NetBeans 8.1) 生成的堆栈跟踪、我的源代码和导入的 jar。

Jar 文件:(由于 stackoverflow 信誉限制,我不能共享超过 2 个链接)

1. sshj-0.2.3.jar

2. slf4j-api-1.7.21.jar 链接 =二进制和源代码

3. bcprov,bcpkix,bcpg,bcmail(jdk 1.5 - 1.8 版本文件) 链接 =签名的 Jar 部分

源代码 :

错误代码 :

堆栈跟踪行是 sshClient.authPublickey(uName, pubkey)

SSHClient.java 1. 分支

堆栈跟踪行是 authPublickey(username, Arrays.asList(keyProviders));

SSHClient.java 2. 分支

身份验证(用户名,上午);

SSHClient.java 3. 分支

我已经用没有密码的 ssh-keygen 生成了我的 ssh 公钥,我也有密码保护的 pubkey。如果我用它尝试同样的事情,错误仍然是一样的。如果需要任何其他的东西我准备分享只是说出来。

0 投票
1 回答
569 浏览

java - 如何使用 JAVA 将字符串回显到 SSH

我正在尝试使用基于公钥/私钥的身份验证通过 SSH 执行远程查询。在本地主机和远程服务器之间共享公钥后,以下命令可以正常工作,并在 bash shell 上将所需的输出作为字符串提供给我。

如何使用 JSCH 或 SSHJ 或任何其他类似库通过 JAVA 实现相同的目标

这是我迄今为止使用 SSHJ 尝试过的,但它对我不起作用(连接成功但没有结果)

0 投票
2 回答
668 浏览

java - 流式传输来自 SSHJ 或 JScH 的输出

我通过SSHJJScH等 Java API在远程机器上执行命令。我探索了 Java Expect API,例如ExpectItExpect4j。但是我找不到将机器的输出逐行流式传输到我的 java 进程的方法。假设我正在远程机器上的一个大文件上执行 grep,我想逐行将巨大的输出流式传输到我的进程,而不是等待整个命令完成。可能吗 ?如果是这样,怎么办?

0 投票
1 回答
646 浏览

java - sshj:如何在命令执行时从长时间运行的命令中读取 InputStream

目前我正在使用以下命令通过 ssh 执行命令:

但是,要查看输出,我需要等到命令完成。

如何获得“实时”响应?

我想我可以读取输入流,直到出现行尾,然后打印该行;但是,库中是否已经有一些方法可以帮助我解决这个问题?

0 投票
1 回答
255 浏览

java - 如何避免 hierynomus ssh 中的非法密钥大小警告

我已禁用主机密钥检查 ssh 但它会记录非法密钥大小警告

0 投票
1 回答
827 浏览

java - Java SSHJ - 在验证程序中添加到 known_hosts 文件

我正在使用 SSHJ 执行远程命令,当主机在 SSHknown_hosts文件中时,我可以成功执行该命令。但是,如果主机不在此文件中,那么我希望用户可以选择添加它。

我相信这样做的方法是创建一个自定义HostKeyVerifier(如下所示的模板)。但是,我正在努力将其转换PublicKeyAAAAB3Nz...cTqGvaDhgtAhw== 格式以使我能够将主机附加到known_hosts文件中。谁能指出我正确的方向?

0 投票
2 回答
4066 浏览

java - 如何将 bouncycastle 实现到一个罐子中?

我在一个项目中使用 SSHJ 库。SSHJ 库使用了 bouncycastle 加密。

在 Eclipse 中一切都很好,但是在我使用 one-jar 将所有内容打包到单个 jar 包中之后,我遇到了 bouncycastle lib 的问题。bcprov-jdk15on-1.51.jar 包含在 /lib 中的 JAR 包中,所有其他库以及例如。sshj.jar。

在日志上我有这些:

找不到安全提供程序类“org.bouncycastle.jce.provider.BouncyCastleProvider”

和这个

警告:禁用高强度密码:密码强度明显受 JCE 政策限制

借助 SFTP 连接的功能,可以实现:

net.schmizz.sshj.transport.TransportException:无法达成和解:[diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1] 和 [diffie-hellman-group-exchange-sha256]

我试过的:

  • 将 Java JCE 安装到 /lib/security
    • 不知道为什么上面的消息仍然弹出关于禁用的高强度密码?
  • 试过“Security.addProvider(new BouncyCastleProvider());” 在代码中

这就是所有“按预期”工作的方式:

  • 通过将“bcprov-jdk15on-1.51.jar”放入 JAVA_HOME\lib\ext\
    • 不幸的是,这对我来说是最后的选择。在 Java 版本更新的情况下维护库我会非常头疼。

那么,显然 BC 库存在一些类路径问题?在某个地方,我读到了一些关于签名安全提供程序库有实现问题的信息,不太明白那个......也许这也是这里的原因?

任何想法如何解决这个问题?感谢您对此问题的任何帮助,谢谢!

编辑:我的 build.xml 实现了建议的代码签名:

0 投票
1 回答
2337 浏览

java - BouncyCastle 需要读取 ecdsa-sha2-nistp256 类型的密钥

我正在使用 sshj (0.19.1) 使用带有 SSH2 连接的 scala 应用程序。我可以从 Eclipse 中正常连接,但是从一个胖 jar 运行应用程序,我遇到了一些错误。我最初的错误是:

我已将 US_export_policy.jar 和 local_policy.jar 添加到 $JAVA_HOME/lib/security。我添加了以下内容以尝试将 bouncycastle 注册为提供者,

但我仍然收到以下错误:

我将 jar 运行为java -cp ../lib/bcprov-jdk15on-1.51.jar -jar <my jar>,因为据我了解,您不能将 bouncycastle 作为提供程序的 fat jar 的一部分包含在内。但我不确定我错过了什么,我无法将其注册为提供者。任何帮助,将不胜感激。

0 投票
1 回答
132 浏览

jakarta-ee - sshj 或 jsch,部署到 Wildfly 10.1 时出现 java.lang.NoClassDefFoundError

我已经尝试了这两个库,并且在部署我的应用程序时,Wildfly 会抛出java.lang.NoClassDefFoundError正在使用的任何类。

Wildfly 中是否存在阻止它们使用的这些库/或 API 的东西?

0 投票
1 回答
2717 浏览

java - 如何修改 net.schmizz.sshj 日志记录级别?

到目前为止,我可以更改默认配置的记录器级别或为 sshj 库禁用它吗?

当我尝试上面的代码时,我遇到了这些问题: