Ошибка согласования алгоритма SSH в Дженкинсе

Я пытаюсь передать ssh из 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.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 

Установленная версия Java на сервере SSH:

 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: согласование с алгоритмом не работает, но оно не работает. От шпатлевки все кажется в порядке. Соединение установлено, но когда я запускаю задание Дженкинса, возникает ошибка. Должен ли я попробовать другую версию ssh-сервера. Теперь я использую copssh.

TL; DR отредактируйте свой sshd_config и включите поддержку diffie-hellman-group-exchange-sha1 и diffie-hellman-group1-sha1 в KexAlgorithms:

 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-адресов по умолчанию был изменен для удаления небезопасных алгоритмов». (см. журнал изменений ). Эта версия была выпущена 6 октября и сделала это 21 октября для тестирования Debian (см. Debian changelog ).

По умолчанию OpenSSH позволяет использовать только следующие алгоритмы обмена ключами:

  • [email protected]
  • ECDH-SHA2-nistp256
  • ECDH-SHA2-nistp384
  • ECDH-SHA2-nistp521
  • Диффи-Хеллмана-группа обменных sha256
  • Диффи-Хеллмана-group14-sha1

В то время как JSch утверждает, что поддерживает эти алгоритмы (см. Раздел «Возможности») для обмена ключами:

  • Диффи-Хеллмана-группа-обменно-sha1
  • Диффи-Хеллмана-group1-sha1

Таким образом, они не могут согласиться на общий алгоритм обмена ключами. Обновление sshd_config (и перезапуск SSH-сервера) делает трюк. По-видимому, JSch должен поддерживать метод «diffie-hellman-group-exchange-sha256» с версии 0.1.50 (см. Журнал изменений ).

Как указано здесь: http://sourceforge.net/p/jsch/mailman/message/32975616/ , в JSch 0.1.51 diffie-hellman-group-exchange-sha256 реализован, но не включен. Вы можете включить его с setConfig функции 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(); 

У нас была та же проблема с нашими jenkinsами (2.21) и плагином SSH (2.4)

Наше решение – использовать выполнение оболочки nativ. Кажется, что плагины jenkins не используют те же настройки соединения ssh, что и shell nativ.

Таким образом, вы можете сделать ssh таким как это (без ssh-plugin):

 ssh [email protected] <<'ENDSSH' echo your remote command here ENDSSH 

Если вы завершаете свои удаленные команды кодом выше, соединение работает нормально.

С этим решением вам больше не нужен ssh-plugin.

Для вашей информации: У нас возникла проблема на наших серверах mittwald, так как они обновили openssh на серверах.

В моем случае – 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 

Я столкнулся с такой же проблемой. AS Matthieu предположил, что нам нужно добавить алгоритм обмена ключами в файл sshd-config, присутствующий в cygwin> etc> 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

Но сам файл находится в режиме только для чтения, поэтому мы должны предоставить ему доступ, как чтение, запись и выполнение, хотя и командную подсказку. msgstr “chmode 777 sshd_config”. затем добавьте выше упомянутые алгоритмы. остановите службу sshd через «net stop sshd», а затем запустите «net start sshd».

Повеселись….

Только мне это помогло.

Если вы хотите временно исправить эту проблему, просто загрузите «Jsch» с мин. версии 0.1.53 и переместите его в каталог плагина SSH, например: cp /tmp/jsch-0.1.53.jar / var / lib / jenkins / plugins / ssh / WEB-INF / lib / Не забывайте перезапустить jenkins. Теперь вы должны создать свою работу с Debian Jessie.

https://issues.jenkins-ci.org/browse/JENKINS-25258?focusedCommentId=274232&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-274232

Вместо исправления этого на стороне сервера вы также можете обновить клиентскую сторону . Если вы используете http://maven.apache.org/wagon/wagon-providers/wagon-ssh/ в своей последней версии (> = 2.12), эта проблема больше не возникает.

       org.apache.maven.plugins maven-site-plugin 3.6   org.apache.maven.wagon wagon-ssh 2.12         

Я также столкнулся с такой же проблемой с аналогичными исключениями на консоли Jenkins. Затем я попробовал решение Матье Виплица. Но это не сработало, поскольку на моем SSH-сервере уже была выполнена одна конфигурация (Удаленная машина: Linux ubuntu 16.04).

Проведя несколько часов, я просто проверил версию своего плагина SSH, которая была 2.1, и я только что обновил ее до последней версии (2.5).

И угадайте, что это сработало!

Я не знаю, будет ли это работать во всех подобных случаях, но я хотел бы предложить попробовать сначала. Это может сэкономить ваше время.

Если вы закончите здесь, потому что вы получите ту же ошибку в PyCharm –

Я использую 2016.2.3 и могу только обновить, если я конвертирую в модель подписки. Проблема видна только на моем ящике Windows. Мне не удалось обновить удаленный сервер, как описано в других ответах (KexAlgorithms).

Мое решение

  1. Нажмите «Справка»
  2. Выберите «Найти действие»
  3. Введите «Switch IDE Boot JDK ..»
  4. Используйте стрелку раскрывающегося списка и нажмите кнопку «…»
  5. Найдите версию JAVA, которую вы используете на своем локальном компьютере, и выберите эту папку.

PyCharm перезапускается, и я могу передать ssh на удаленные серверы.

  • SSH от Windows до Linux без ввода пароля
  • SSH для виртуальной машины Vmware с сетью NAT
  • Не удалось подключиться к SSH после сгенерированного открытого ключа и закрытого ключа
  • SSH-туннель через 2 сервера
  • Sudo запрашивает пароль по ssh
  • Выполнять несколько команд по ssh без повторного подключения
  • Как я могу использовать ssh для запуска команды на удаленном компьютере Unix и выйти до завершения команды?
  • Как заставить ssh войти в качестве нужного пользователя?
  • Продолжить фоновые задания / задания SSH при закрытии SSH
  • Не удается войти с PuTTY в RasPi 3 + OSMC
  • Как использовать SSH для запуска сценария оболочки на удаленной машине?
  • Давайте будем гением компьютера.