Jenkinsパイプライン内のDocker内のGitが機能しない

apr_1985

Jenkinsパイプラインの一部として実行されるDockerコンテナ内でいくつかのgitクエリを実行しようとしています。Dockerコンテナの外では、sshsgentは正常に機能しており、SCMに問題なくアクセスできます。コンテナ内で、ホストキーの検証の問題が発生しています。
誰かが私が犯した間違いを手伝ってくれる?

script {
    sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
    {
        sh("""
            ssh -p 7999 [email protected] whoami
        """)
    }
    docker.withRegistry('https://dockerhub.banana.com', 'banana-dockerhub-credential') 
    {
        docker.image('banana_release_base').pull()
        docker.image('banana_release_base').inside(
        '''
           -v /system:/system -v /tmp:/tmp --privileged -u 0
        '''
       )
       {
             sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
             {
                 sh("""
                     echo $SSH_AUTH_SOCK
                     ssh -p 7999 [email protected] whoami
                 """)
             }
        }
    }
}

最初のwhoami呼び出しの出力:

[docker_git_test] Running shell script
+ ssh -p 7999 [email protected] whoami
d42967b44abe31d6

Dockerコンテナ出力での2番目の呼び出し(およびエコー):

[docker_git_test] Running shell script
+ echo /tmp/ssh-dSoDZMggpAU1/agent.13
/tmp/ssh-dSoDZMggpAU1/agent.13
+ ssh -p 7999 [email protected] whoami
Host key verification failed
mkobit

ホストキーの検証に失敗しました

コンテナ内のSSH接続は、ホスト(bitbucket-eng-gpk1.com)のIDを確認できなかったため、失敗しました。Jenkinsがコンテナーをプロビジョニングするとき、ビルドステップが分離されるように、コンテナーにマウントする環境変数やファイルシステムの場所など、外部からの物の量を制限しようとします。コンテナでは、接続を確立する前にVCSのホストキーを受け入れておらず、対話型端末ではないため、失敗します。

これを処理するには、いくつかの異なる方法があります。これが私の頭のてっぺんから考えることができるいくつかです:

  • ホスト鍵チェックを無視します(これのセキュリティへの影響を理解する(12)) -使用StrictHostKeyCheckingを無効にチェックするオプションを選択します。このUserKnownHostsFileオプションは、受け入れられたキーを別の場所にパイプするための接続詞として役立ちます。これは、~/.ssh/configファイル内のホストごとに実行することもできます。

    ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 7999 [email protected] whoami
    
  • SSHキーをDockerイメージにビルドします(脆弱)

  • ~/.ssh/configホストからコンテナにファイルをマウントします。
  • ホストからいくつかのSSH構成ファイルを「インストール」するか、検証済みのホストキーを持つ他の構成ファイルプロバイダーをコンテナーに使用します(おそらく、構成ファイルプロバイダープラグインを使用します)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

execコマンド内のパイプが機能しない

分類Dev

jenkinsパイプラインのgitチェックアウトが機能しない

分類Dev

Docker内のPythonスライダーが機能しない

分類Dev

Divストライプ内のDivが機能しない

分類Dev

Jenkins + GitHubプラグインのWebhookが機能しない

分類Dev

別のブランチのSCMからのJenkinsパイプラインが機能しない

分類Dev

Jenkinsパイプラインshreturnstdoutが機能しない

分類Dev

ライブラリ内の角度のあるデフォルトパイプが機能しない

分類Dev

groovyのマップのリストが機能しないJenkinsパイプライン選択入力

分類Dev

Jenkinsパイプラインファイルが機能しないGroovyでの文字列補間

分類Dev

Jenkinsパイプラインの「cd」コマンドが機能しない、「cd」と「dir」?

分類Dev

Jenkins変数がパイプラインのsedコマンドで機能しない

分類Dev

Dockerの下のElasticsearchクライアント内からホスト名解決が機能しない

分類Dev

ポップアップ内のJqueryスライダーが機能しない

分類Dev

div内のn番目のタイプが機能しない

分類Dev

jqueryプラグイン内の.change()関数が機能しないのはなぜですか?

分類Dev

ViewPager内のScrollView:スワイプが機能しない

分類Dev

ループ内のPDOステートメントのパラメーターのバインドが機能しない

分類Dev

Jenkinsパイプラインで資格情報が機能しない

分類Dev

fileExistsが$ {variant}で機能しないjenkinsパイプラインに存在する

分類Dev

Jenkins並列パイプラインが期待どおりに機能しない

分類Dev

vim内のAckプラグインが機能していません

分類Dev

ドロップ関数内のイベントハンドラーが機能しない

分類Dev

プラグイン内の関数に対してremove_actionが機能しない

分類Dev

Swing Timer内のペイントが機能しない

分類Dev

範囲内のgolangポインタが機能しない

分類Dev

DataTemplate内のバインドが機能しない

分類Dev

Jenkinsパイプライン(他に機能しない場合)

分類Dev

mutateを使用すると、パイプライン内で関数が機能しない

Related 関連記事

  1. 1

    execコマンド内のパイプが機能しない

  2. 2

    jenkinsパイプラインのgitチェックアウトが機能しない

  3. 3

    Docker内のPythonスライダーが機能しない

  4. 4

    Divストライプ内のDivが機能しない

  5. 5

    Jenkins + GitHubプラグインのWebhookが機能しない

  6. 6

    別のブランチのSCMからのJenkinsパイプラインが機能しない

  7. 7

    Jenkinsパイプラインshreturnstdoutが機能しない

  8. 8

    ライブラリ内の角度のあるデフォルトパイプが機能しない

  9. 9

    groovyのマップのリストが機能しないJenkinsパイプライン選択入力

  10. 10

    Jenkinsパイプラインファイルが機能しないGroovyでの文字列補間

  11. 11

    Jenkinsパイプラインの「cd」コマンドが機能しない、「cd」と「dir」?

  12. 12

    Jenkins変数がパイプラインのsedコマンドで機能しない

  13. 13

    Dockerの下のElasticsearchクライアント内からホスト名解決が機能しない

  14. 14

    ポップアップ内のJqueryスライダーが機能しない

  15. 15

    div内のn番目のタイプが機能しない

  16. 16

    jqueryプラグイン内の.change()関数が機能しないのはなぜですか?

  17. 17

    ViewPager内のScrollView:スワイプが機能しない

  18. 18

    ループ内のPDOステートメントのパラメーターのバインドが機能しない

  19. 19

    Jenkinsパイプラインで資格情報が機能しない

  20. 20

    fileExistsが$ {variant}で機能しないjenkinsパイプラインに存在する

  21. 21

    Jenkins並列パイプラインが期待どおりに機能しない

  22. 22

    vim内のAckプラグインが機能していません

  23. 23

    ドロップ関数内のイベントハンドラーが機能しない

  24. 24

    プラグイン内の関数に対してremove_actionが機能しない

  25. 25

    Swing Timer内のペイントが機能しない

  26. 26

    範囲内のgolangポインタが機能しない

  27. 27

    DataTemplate内のバインドが機能しない

  28. 28

    Jenkinsパイプライン(他に機能しない場合)

  29. 29

    mutateを使用すると、パイプライン内で関数が機能しない

ホットタグ

アーカイブ