SSH von der Docker-Instanz über Bitbucket-Pipelines in die Staging-Maschine

8

Wie kann ich mithilfe des neuen Bitbucket-Pipelines-Features von dem Andock-Container, den es aufspinnt, in meine Staging-Box SSH gehen?

Der letzte Schritt in meiner Pipeline ist eine .sh -Datei, die den erforderlichen Code auf Inszenierung setzt, aber weil meine Staging-Box verwendet öffentliche Schlüssel-Authentifizierung und nicht weiß, über die Docker Container, die SSH-Verbindung verweigert wird.

Wie auch immer, dies zu umgehen, ohne die Passwortauthentifizierung über SSH zu verwenden (was mir auch Probleme bereitet, indem ich mich immer dafür entscheide, stattdessen über den öffentlichen Schlüssel zu authentifizieren.)?

    
Speedy 27.05.2016, 01:24
quelle

2 Antworten

6

Bitbucket Pipelines können ein Docker Bild verwenden Sie erstellt haben, die den SSH-Client-Setup während des Builds laufen muss, solange es auf einem öffentlich zugänglichen Container Register gehostet.

Erstellen Sie ein Docker-Bild.

Erstellen Sie ein Docker-Image mit Ihrem ssh-Schlüssel, der irgendwo verfügbar ist. Das Bild muss auch den Host-Schlüssel für Ihre Umgebung haben (s) gespeichert unter dem Benutzer der Behälter laufen wird als . Dies ist normalerweise der root -Benutzer, kann aber unterschiedlich sein, wenn Sie einen USER -Befehl in Ihrem Dockerfile haben.

Sie können eine bereits bestückte known-hosts -Datei in die Datei kopieren oder die Datei dynamisch zur Bildaufbauzeit konfigurieren mit:

%Vor%

Veröffentlichen Sie das Bild

Veröffentlichen Sie Ihr Bild in einer öffentlich zugänglichen, aber privaten -Registrierung. Sie können selbst hosten oder einen Dienst wie Docker Hub .

Pipelines konfigurieren

Konfigurieren Pipelines mit Docker bauen Bild .

Wenn Sie Docker Hub verwenden

%Vor%

Oder Ihre eigene externe Registrierung

%Vor%

Beschränken Sie den Zugriff auf Ihre Hosts

Sie wollen nicht SSH-Schlüssel, um Ihre Gastgeber auf der ganzen Welt fliegen zuzugreifen, damit ich auch den Zugang für diesen deploy SSH-Schlüssel auf Führe nur deine Bereitstellungsbefehle aus .

Die authorized_keys -Datei auf Ihrem Staging-Host:

%Vor%

Leider bitbucket Sie eine IP-Liste nicht veröffentlichen Zugang zu beschränken , da sie gemeinsam genutzte Infrastruktur für Pipelines verwenden. Wenn sie zufällig auf AWS laufen, dann veröffentlicht Amazon IP-Listen .

%Vor%

Denken Sie auch daran, sie zu datieren und sie von Zeit zu Zeit ablaufen zu lassen. Ich weiß, dass ssh-Schlüssel Daten nicht erzwingen, aber es ist eine gute Idee, es trotzdem zu tun.

    
Matt 27.05.2016, 02:08
quelle
2

Sie können jetzt SSH-Schlüssel unter den Pipeline-Einstellungen einrichten, so dass Sie kein privates Docker-Image benötigen, nur um ssh-Schlüssel zu speichern. Es wird auch aus Ihrem Quellcode extrahiert, so dass Sie es auch nicht in Ihrem Repo haben.

Unter

%Vor%

Sie können entweder ein Schlüsselpaar angeben oder ein neues generieren. Der private Schlüssel wird in den Docker-Container unter ~/.ssh/config eingefügt und Sie erhalten einen öffentlichen Schlüssel, den Sie in Ihren Host in die Datei ~/.ssh/authorized_keys einfügen können. Die Seite erfordert auch eine IP oder einen Namen, um den Fingerabdruck für bekannte Hosts einzurichten, wenn diese ebenfalls auf dem Andockfenster ausgeführt werden.

Bitbucket hat auch IP-Adressen bereitgestellt, die Sie bei Bedarf für die Docker-Container auflisten können. Sie sind derzeit :

  • 23.20.208.24/32
  • 52.7.19.238/32
  • 52.55.104.10/32
  • 52.203.194.12/32
  • 34.236.25.177/32
  • 34.232.25.90/32
  • 52.203.14.55/32
AndrewK 08.03.2017 20:47
quelle