首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSHJ和Maven shade插件

SSHJ和Maven shade插件
EN

Stack Overflow用户
提问于 2013-11-06 23:14:24
回答 3查看 1.5K关注 0票数 1

在Eclipse中测试SSHJ,一切看起来都很好。但是当我使用Maven shade插件来打包SSHJ时,我得到了以下错误:

代码语言:javascript
运行
复制
Exception in thread "main" net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
at net.schmizz.sshj.SSHClient.auth(SSHClient.java:217)
at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:316)
at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:365)
at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:295)
at no.f12.SshRepository.executeTaskOnHost(SshRepository.java:23)
at no.f12.SshService.serviceCommand(SshService.java:22)
at no.f12.App.main(App.java:29)

添加

代码语言:javascript
运行
复制
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

将错误消息更改为:

代码语言:javascript
运行
复制
Exception in thread "main" net.schmizz.sshj.transport.TransportException: Unable to reach a settlement: [] and [aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-gcm@openssh.com, aes256-gcm@openssh.com, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour, rijndael-cbc@lysator.liu.se]
at net.schmizz.sshj.transport.Proposal.firstMatch(Proposal.java:165)
at net.schmizz.sshj.transport.Proposal.negotiate(Proposal.java:147)
at net.schmizz.sshj.transport.KeyExchanger.gotKexInit(KeyExchanger.java:239)
at net.schmizz.sshj.transport.KeyExchanger.handle(KeyExchanger.java:364)
at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:478)
at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
at net.schmizz.sshj.transport.Reader.run(Reader.java:72)

你知道怎么解决这个问题吗?

关于我为什么要使用阴影的一些背景知识...我正试图达到这样一种程度,即Java的使用和小工具的分发是非常简单的。所以我使用以下命令创建了一个真正可执行的jar:https://github.com/brianm/really-executable-jars-maven-plugin。这使我能够创建一个可执行文件来分发并添加到用户的路径中。有点像Go有一个包含所有依赖项的二进制文件。

EN

回答 3

Stack Overflow用户

发布于 2014-04-16 14:36:25

我就遇到了这个问题。我最终放弃了把所有东西都放在一个大的"uberjar“中的尝试。

相反,我使用maven-assembly plugin组装了所有jars,然后提取它们并将它们添加到类路径中以便执行,例如'java -cp all -needed libs/* com.company.MainClass‘。

票数 1
EN

Stack Overflow用户

发布于 2014-08-14 22:43:47

另一种可行的方法是将bouncycastle添加到JRE扩展库中。

例如,将'bcprov-jdk15on-1.49.jar‘放在主机上的文件夹'$JAVA_HOME/jre/lib/ext/’中。

票数 1
EN

Stack Overflow用户

发布于 2014-01-04 06:26:42

你必须在jar上签名,这是Javax.security要求的。我遇到了类似的问题,并且我的测试中有堆栈跟踪:

代码语言:javascript
运行
复制
Cannot init Cipher factory: blowfish-cbc
java.lang.SecurityException: JCE cannot authenticate the provider BC
    at javax.crypto.Cipher.getInstance(Cipher.java:642)
    at javax.crypto.Cipher.getInstance(Cipher.java:580)
    at net.schmizz.sshj.common.SecurityUtils.getCipher(SecurityUtils.java:96)
    at net.schmizz.sshj.transport.cipher.BaseCipher.init(BaseCipher.java:88)
    ....
Caused by: java.util.jar.JarException: file:/test-jar-with-dependencies.jar has unsigned entries - library.properties
    at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:462)
    at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:322)
    at javax.crypto.JarVerifier.verify(JarVerifier.java:250)
    at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:161)
    at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:187)
    at javax.crypto.Cipher.getInstance(Cipher.java:638)
    at javax.crypto.Cipher.getInstance(Cipher.java:580)
    at net.schmizz.sshj.common.SecurityUtils.getCipher(SecurityUtils.java:96)
    at net.schmizz.sshj.transport.cipher.BaseCipher.init(BaseCipher.java:88)
    at net.schmizz.sshj.DefaultConfig.initCipherFactories(DefaultConfig.java:152)
    at net.schmizz.sshj.DefaultConfig.<init>(DefaultConfig.java:107)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19815748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档