Jenkinsからローカルサーバーにsshしようとしていますが、次のエラーがスローされます:
[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.SSHBuildWrapper.executePreBuildScript(SSHBuildWrapper.Java:75)
at org.jvnet.hudson.plugins.SSHBuildWrapper.setUp(SSHBuildWrapper.Java:59)
at hudson.model.Build$BuildExecution.doRun(Build.Java:154)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:533)
at hudson.model.Run.execute(Run.Java:1754)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
at hudson.model.ResourceController.execute(ResourceController.Java:89)
at hudson.model.Executor.run(Executor.Java:240)
Finished: FAILURE
SSHサーバーにJavaのインストール済みバージョン:
Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
クライアントにインストールされたJavaのバージョン:
Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
また、この解決策を試しました: JSchException:Algorithm negotiation fail しかし、それは機能していません。 PuTTYからはすべて問題ないようです。接続は確立されますが、Jenkinsジョブをトリガーするとエラーがスローされます。別のバージョンのsshサーバーを試す必要があります。今、私はcopsshを使用しています。
TL; DR sshd_configを編集し、KexAlgorithmsでdiffie-hellman-group-exchange-sha1およびdiffie-hellman-group1-sha1のサポートを有効にします。
KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
OpenSSH 6.7で次の変更を行った後、問題が発生したと思われます。「デフォルトの暗号とMACのセットは、安全でないアルゴリズムを削除するために変更されました。」 ( changelog を参照)。このバージョンは10月6日にリリースされ、10月21日にDebianテスト用に作成されました( Debian changelog を参照)。
OpenSSHは、デフォルトで次のキー交換アルゴリズムのみを有効にします。
JSchは、キー交換について これらのアルゴリズム (「機能」を参照)をサポートすると主張しています。
確かに、彼らは共通の鍵交換アルゴリズムに同意することはできません。 sshd_configを更新(およびSSHサーバーを再起動)することで問題は解決します。 JSchは、バージョン0.1.50以降、「diffie-hellman-group-exchange-sha256」メソッドをサポートしているようです( changelog を参照)。
Jenkins(2.21)とSSHプラグイン(2.4)で同じ問題が発生しました
私たちの解決策は、nativ Shellの実行を使用することです。 jenkinsプラグインはnativ Shellと同じssh接続設定を使用していないようです。
したがって、sshを次のように接続できます(sshプラグインなし)。
ssh user@Host <<'ENDSSH'
echo your remote command here
ENDSSH
リモートコマンドを上記のコードでラップすると、接続は正常に機能します。
このソリューションでは、ssh-pluginはもう必要ありません。
あなたの情報について:mittwaldサーバーでopenshをアップグレードしたため、問題が発生しました。
ここに概説されているように: http://sourceforge.net/p/jsch/mailman/message/32975616/ 、JSch 0.1.51でdiffie-hellman-group-exchange-sha256は実装されていますが、有効化されていません。次のようにsetConfig
関数を使用して有効にできます。
JSch jsch = new JSch();
Java.util.Properties configuration = new Java.util.Properties();
configuration.put("kex", "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256");
configuration.put("StrictHostKeyChecking", "no");
Session session = jsch.getSession("username", "hostname", 22);
session.setPassword("password");
session.setConfig(configuration);
session.connect();
私の場合-サーバー上のOpenSSH_6.7p1-KexAlgorithmsとMACを変更する必要がありました(追加のhmac-md5、hmac-sha1、hmac-sha1-96、hmac-md5-96値):
KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected],hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96
上記を配置する必要があります:
/etc/ssh/sshd_config
そして、sshを再起動します。
Sudo /etc/init.d/ssh restart
サーバー側でこれを修正する代わりに、クライアント側を更新することもできます-)。 http://maven.Apache.org/wagon/wagon-providers/wagon-ssh/ を新しいバージョンで使用する場合(> = 2.12-2018年9月現在のリリースは3.2.0 )、この問題はもう発生しません。
<project>
<!-- ... -->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.6</version>
<dependencies>
<dependency>
<groupId>org.Apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
<!-- ... -->
</project>
Update2018-10-21:最新バージョンは現在3.2.0です。さまざまな脆弱性の問題があるため、常に最新バージョンのSSHまたはSSL関連ソフトウェアを使用することをお勧めします。そのため、コードの依存関係を確認して更新してください。
私はまったく同じ問題に直面しました。 ASマシューは、cygwin> etc> sshd_configにあるsshd-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
ただし、ファイル自体は読み取り専用モードになっているため、comand Promptを使用して読み取り、書き込み、実行などのすべてのアクセスを提供する必要があります。 「chmode 777 sshd_config」。次に、上記のアルゴリズムを追加します。 「net stop sshd」でsshdサービスを停止してから、「net start sshd」を開始します。
楽しんで....
これだけが助けになりました。
この問題を一時的に修正したい場合は、「Jsch」をダウンロードしてください。バージョン0.1.53をSSHプラグインディレクトリに移動します。例:cp /tmp/jsch-0.1.53.jar/var/lib/jenkins/plugins/ssh/WEB-INF/lib /を忘れないでくださいジェンキンスを再起動します。これで、Debian Jessieでジョブをビルドできるはずです。
あなたがPyCharmで同じエラーを受け取ったためにここで終わる場合-
2016.2.3を使用していますが、サブスクリプションモデルに変換した場合にのみアップグレードできます。問題は、Windowsボックスでのみ見られます。他の回答(KexAlgorithms)で説明されているように、リモートサーバーを更新できませんでした。
私の解決策は
PyCharmが再起動し、リモートサーバーにSSH接続できます。
Jenkinsコンソールでも同様の例外があり、同じ問題に直面しました。次に、Matthieu Wipliezのソリューションを試しました。しかし、同じ設定がすでにSSHサーバー(リモートマシン:Linux ubuntu 16.04)で行われているため、機能しませんでした。
数時間を費やした後、私はSSHプラグインのバージョン2.1をチェックし、それを最新(2.5)に更新しました。
そして、それがうまくいったと思います!!
同様のケースすべてで機能するかどうかはわかりませんが、最初に試してみることをお勧めします。時間を節約できます。