経緯
Jenkinsでジョブを作成し実行したところ、エラーが発生してジョブが上手く動かなかった。
本記事はその備忘録として記す
前提
サーバAからサーバBへ接続し、ジョブを実行させたいと思っている。
しかしJenkinsでの実行ログを見ると、どうもサーバAとサーバBの接続が上手くいっていないようだ。
その対処法としていくつか試している状況である。
初めに遭遇したエラーは以下だった。
# ssh danbo@ServerB.co.jp
Host key verification failed.
試したこと
その①
サーバBにknown_hosts情報の削除
# ssh keygen -R danbo@ServerB.co.jp
[-R]オプションは、「指定したホストに属する鍵を全て取り除く」と資料にあり、サーバBに接続する際のknown_hostsに指定された鍵を一度削除するのに有効だと考え、実行。しかし、上手くいかない。しかも別エラーが発生
## 発生したエラー文
Pseudo-terminal will not be allocated because stdin is not a terminal.
その②
更に変なエラーが出てきてしまったので、そちらの対処をすることにした。
以下参考資料にもあるように、オプションを付与することでの接続を試みた
# ssh -t -t danbo@ServerB.co.jp
しかし、付随して発生したエラーは解消されても、本来詰まっていたエラーへの対処にはならなかった。
その③
以下コマンドにて実施
# ssh -o StrictHostKeyChecking=no danbo@ServerB.co.jp
ホストキーの認証をしない設定をオプションとして指定し、実行することでログインすることが出来ました!
参考資料にはファイルに記載するとありましたが、sshの場合オプションで指定してホストキー認証を飛ばすことも可能でした。
※上記オプションの場合、ホストキーが無い場合でもsshによる接続を行うことが出来ます。
まとめ
ホストキー認証で詰まったら、一度認証を飛ばす設定をすると、接続ができる。
また、一度接続さえ出来てしまえば2回目からはホストキーを無視する設定を入れなくてもセッションが出来ているので
2回目以降はオプションを外して接続することも可能だった。
参考資料
ssh-keygen コマンドーーSSHの公開鍵と秘密鍵を作成する
Jenkins CLI
JenkinsJobでssh接続先でコマンドを実行する方法
[Linux] 特定SSHホストのフィンガープリントのチェックを省略する