8

新しい Bitbucket Pipelines 機能を使用して、スピンアップした Docker コンテナからステージング ボックスに SSH 接続するにはどうすればよいですか?

私のパイプラインの最後のステップは.sh、必要なコードをステージングにデプロイするファイルですが、私のステージング ボックスは公開鍵認証を使用しており、docker コンテナーを認識していないため、SSH 接続が拒否されています。

とにかく、SSHを介したパスワード認証を使用せずにこれを回避しますか(代わりに公開鍵を介した認証を常に選択することで問題が発生しています)?

4

2 に答える 2

6

Bitbucket パイプラインは、パブリックにアクセス可能なコンテナー レジストリでホストされている限り、ビルド中に実行するための ssh クライアント セットアップを含む、作成した Docker イメージを使用できます。

Docker イメージを作成します。

どこかで入手できる ssh キーを使用してDocker イメージを作成します。イメージには、コンテナーを実行するユーザーで保存された環境のホスト キーも必要です。これは通常はユーザーですが、 にコマンドrootがある場合は異なる場合があります。USERDockerfile

すでに設定されているknown-hostsファイルをコピーするか、イメージのビルド時にファイルを動的に構成できます。

RUN ssh-keyscan your.staging-host.com

画像を公開する

公開されているが非公開のレジストリにイメージを公開します。独自のものをホストすることも、 Docker Hubなどのサービスを使用することもできます。

パイプラインの構成

Docker イメージでビルドするようにパイプラインを構成します

Docker Hub を利用する場合

image:
  name: account-name/java:8u66
  username: $USERNAME
  password: $PASSWORD
  email: $EMAIL

または独自の外部レジストリ

  name: docker.your-company-name.com/account-name/java:8u66

ホストでのアクセスを制限する

世界中を飛び回るホストにアクセスするための ssh キーを持ちたくないので、これらの deploy ssh キーへのアクセスをdeploy コマンドの実行のみに制限します。

authorized_keysステージング ホスト上のファイル:

command="/path/to/your/deploy-script",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-dss AAAAC8ghi9ldw== deploy@bitbucket

残念ながら、bitbucketは パイプラインに共有インフラストラクチャを使用しているため、アクセスを制限するための IP リストを公開していません。それらが AWS で実行されている場合、Amazon はIP リストを公開します

from="10.5.0.1",command="",no-... etc

また、それらに日付を付け、時々期限切れにすることを忘れないでください。ssh キーが日付を強制しないことは知っていますが、とにかく実行することをお勧めします。

于 2016-05-27T02:08:58.453 に答える