我试图通过ssh与JSch(0.1.44-1)连接到远程sftp服务器但在"session.connect();"期间 我得到这个例外:
com.jcraft.jsch.JSchException: Algorithm negotiation fail at
com.jcraft.jsch.Session.receive_kexinit(Session.java:529) at
com.jcraft.jsch.Session.connect(Session.java:291) at com.jcraft.jsch.Session.connect(Session.java:154)
...
Run Code Online (Sandbox Code Playgroud)
来自JSch的日志:
INFO: Connecting to xx.xx.xx.xxport 22
INFO: Connection established
INFO: Remote version string: SSH-2.0-WeOnlyDo 2.0.6
INFO: Local version string: SSH-2.0-JSCH-0.1.44
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
INFO: aes256-ctr is not available.
INFO: aes192-ctr is not available.
INFO: aes256-cbc is not available.
INFO: aes192-cbc is not available.
INFO: arcfour256 is not available.
INFO: SSH_MSG_KEXINIT sent
INFO: SSH_MSG_KEXINIT received
INFO: Disconnecting from xx.xx.xx.xx port 22
Run Code Online (Sandbox Code Playgroud)
我可以使用linux sftp命令登录远程服务器.我试图在互联网上找到任何线索,但我失败了.
linux sftp命令的调试输出:
OpenSSH_5.5p1-DAM_1.2, OpenSSL 0.9.8r …Run Code Online (Sandbox Code Playgroud) 我有一个持续集成服务器(Jenkins),它构建我的代码(检查编译错误)并运行测试,然后将文件部署到远程服务器(不是war文件,但实际的文件结构)我这样做Jenkins插件允许我通过samba传输文件,它每晚都会这样做.
现在,我需要做的是在远程服务器上运行ant命令.之后,我需要在远程服务器上启动应用程序服务器,通过从命令行运行.bat文件来启动应用程序服务器.
我对如何实现这一点非常无能为力,我知道Jenkins能够运行批处理命令,但是如何让它们在服务器的上下文中运行而不是在构建服务器的上下文中运行?
我有一个远程服务器来托管我的项目.我在本地使用我的PhpStorm,因此每次保存时,它都会自动与远程服务器同步.
但是,我无法配置PhpStorm以在远程服务器上运行PHPUnit.
在Configure Remote PHP Interpreter我填写正确的信息(主机,用户名和密码).
我遇到的错误是"Algorithm negotiation fail"当我验证并"Test SFTP Connection: Connection to 'id address' failed. Connection failed"尝试指定PHP解释器的路径时.
我该如何解决这个问题?
此问题可能与其他Duplicati用户有关:
Duplicati配置为在Debian网络服务器上通过SSH进行备份.更新此Web服务器后,备份失败,并显示错误消息"算法协商失败".
仍然可以使用相同的凭据通过FileZilla进行SFTP.
我使用 JSCH 0.1.53 连接到使用 1024 位 RSA 密钥的远程 SSH 服务器。当我们还使用 1024 位 RSA 密钥时,我们能够成功连接到远程服务器,但是当我们生成更强的 2048 位密钥时,我们就无法连接了。我们收到一条错误消息,内容为“素数大小必须是 64 的倍数,并且范围只能从 512 到 2048”,并且源自对 DHGEX.java (Diffie-Hellman Group EXchange) 的调用。
我们正在运行 Java 1.8,并且错误消息正确指定了 2048 的最大位大小,所以问题不在于 Java 1.6 和 1.7 中 1024 位的 JCE 密钥限制。我们已经通过 openssl rsa -text -noout -in id_rsa 和 ssh-keygen -lf id_rsa.pub 确认我们的私钥和公钥实际上都是 2048 位。
由于一切看起来都很好,我开始在 JSCH 代码中添加调试行并重新编译 JAR,我最终能够确定在密钥交换期间传递给我们的模数实际上是 2047 位长。现在,2047 位的长度本质上并不意味着您没有生成 2048 位的密钥,或者它的强度不如实际包含 2048 位的密钥,它只是意味着您碰巧得到了相乘的两个素数到第一位是 0 的东西。所以这是预期的行为(有时),JCE 检查可能应该是 (n % 64 == 0 || n % 64 == 63)。但是 JCE 在这一点上是一个坚持者,因此它拒绝了这个密钥,因为它不是它认为有效的长度。 …
我正在尝试从客户端计算机连接 sftp 服务器。但是 com.jcraft.jsch.JSchException:算法协商失败了我遇到的这种错误。
com.jcraft.jsch.JSchException: Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:540)
at com.jcraft.jsch.Session.connect(Session.java:288)
at com.jcraft.jsch.Session.connect(Session.java:145)
at com.na.common.NewReading.main(NewReading.java:28)
Run Code Online (Sandbox Code Playgroud)
我试图通过在 Jenkins 中使用算法协商失败 SSH来解决这个问题,并且我已经更改了 sshd_config 中的 KexAlgorithms,但出现错误。
所以请帮助我。谢谢
我在Jenkins的算法协商失败SSH中看到了相同问题的答案
我面临同样的问题,但更新ss_config没有帮助,我仍然得到相同的错误.我还有另一个问题,可能与此有关.在Jenkins的一般配置中,我将构建slave作为远程主机添加,并为其指定了主机名,端口,用户名和密钥文件路径,但仍然显示"无法连接到服务器".我想知道为什么,因为如果我登录Jenkins机器,我可以使用相同的密钥文件轻松地在命令行中连接到我的远程主机.
更新:
这是我添加到ssh_config的行:
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Run Code Online (Sandbox Code Playgroud)
这是Jenkins的控制台输出:
[SSH] Exception:Algorithm negotiation fail
com.jcraft.jsch.JSchException: Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:520)
at com.jcraft.jsch.Session.connect(Session.java:286)
at com.jcraft.jsch.Session.connect(Session.java:150)
at org.jvnet.hudson.plugins.SSHSite.createSession(SSHSite.java:141)
at org.jvnet.hudson.plugins.SSHSite.executeCommand(SSHSite.java:151)
at org.jvnet.hudson.plugins.SSHBuilder.perform(SSHBuilder.java:60)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.build(Build.java:205)
at hudson.model.Build$BuildExecution.doRun(Build.java:162)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537)
at hudson.model.Run.execute(Run.java:1741)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:381)
Build step 'Execute shell script on remote host using ssh' marked build as failure
[SSH] executing post build script:
Run Code Online (Sandbox Code Playgroud)