JenkinsのJobでSSHエラーが発生したので調べてみた

Jenkinsのjobでリモートホストのバッチを起動するJobを作成しています。
そのJobからビルド失敗メールが届いたので調査した結果をメモします。

環境は下記の通り。
Jenkins2.6
SSH Plugin2.4

Jobはシンプルに、
・リモートサーバーへSSHでログイン
・シェルをキック
のみです。

確認

Jobのコンソールを確認してみると下記のエラーログが出力されていました。

[SSH] Exception:verify: false
com.jcraft.jsch.JSchException: verify: false
	at com.jcraft.jsch.Session.connect(Session.java:295)
	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:534)
	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:410)
Build step 'Execute shell script on remote host using ssh' marked build as failure

エラーの内容で検索すると下記の記事がヒットしました。
Java からの SSH接続でたまに verify false になる

どうやらSSHの際に利用している「jsch-0.1.4x.jar」が悪さをしているっぽい。

Jenkins側のissueにもありました。

ということでSSHプラグインのjarを確認

// Jenkinsサーバーへログイン
# ls JENKINS_HOME/plugins/ssh/WEB-INF/lib | grep jsch
> jsch-0.1.42.jar

古いですね。

公式サイトを見ると執筆時点での最新は「jsch-0.1.53.jar」のようです。

とりあえずローカル環境のJenkinsにて下記のテストを実施。
・SSH Pluginのインストール
・SSHの設定(ローカル → 社内の検証サーバ)
・導通確認
 ⇒ 正常にSSHが行えることを確認。
・jarを「jsch-0.1.53.jar」に差し替えて再起動
・導通確認
 ⇒ 正常にSSHが行えることを確認。

動作については特に問題はなさそうでしたが、
jarの差し替えでSSHエラーが完全に取り除けるかは不明。

とりあえずローカルでしばらく運用してみます。
それで問題なさそうであればほかのSSHのJobがあるJenkinsへ適用するか検討をしようと思います。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る