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.)?
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-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:
Veröffentlichen Sie Ihr Bild in einer öffentlich zugänglichen, aber privaten -Registrierung. Sie können selbst hosten oder einen Dienst wie Docker Hub .
Konfigurieren Pipelines mit Docker bauen Bild .
Wenn Sie Docker Hub verwenden
%Vor%Oder Ihre eigene externe Registrierung
%Vor%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:
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.
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 :
Tags und Links authentication ssh docker public-key bitbucket-pipelines