Wie füge ich eine SSH-Passphrase zu Docker hinzu und entferne sie, nachdem sie verwendet wurde?

Lesezeit: 3 Minuten

Das Problem klingt elementar, aber ich kann keine sichere und einfache Lösung finden.

Das Problem ist das folgende: Ich habe ein Projekt und möchte Abhängigkeiten aus privaten Git-Repos abrufen, um eine Laufzeitumgebung zu erstellen, und anschließend sowohl den SSH-Schlüssel als auch die SSH-Passphrase entfernen. Ich kann die Passphrase nicht überspringen, da sie von Git-Remote-Repos erzwungen wird.

  1. Ich habe Mühe, die SSH-Passphrase zu pushen, sodass SSH nicht nach einer Passphrase fragt
  2. Ich habe Mühe zu verstehen, wie man es sicher macht

Die Frage, wie kann ich das machen, damit der Ansatz auch sicher wird?

Ich arbeite in Docker und kann möglicherweise jede Open-Source-Software darauf installieren.

  • Was ich im Allgemeinen tue, ist, die Passphrase zu löschen, das Repo zu klonen und die Passphrase wieder an Ort und Stelle zu setzen. Ich denke, Sie haben deutlich gemacht, dass Ihre Fernbedienung die Verwendung einer Passphrase erzwungen hat, sodass Sie sie nicht löschen und klonen können? Ist mein Verständnis richtig?

    – Rakmo

    23. September 2020 um 9:08 Uhr

  • Ja, genau das ist das Problem. Es wird erzwungen, also muss ich es überwinden. Ich habe auch keine Kontrolle über die Richtlinien der Organisation.

    – Dmytro Chasovskyi

    23. September 2020 um 9:10 Uhr

  • Ich neige dazu, alle Git-Operationen außerhalb des Docker-Bereichs auszuführen. Das vermeidet das Problem, einen Schlüssel in das Bild zu bekommen, und die Möglichkeit, ihn durchsickern zu lassen; es lässt mich einen beliebigen Zweig oder funktionierenden Code erstellen; und es vermeidet Probleme, bei denen Docker a nicht wiederholt RUN git clone Linie, die glaubt, es sei idempotent.

    – David Labyrinth

    23. September 2020 um 11:03 Uhr

  • @DavidMaze In meinem Fall würde es nicht funktionieren, da die SSH-Verbindung Projektabhängigkeiten aufbauen soll, die sich in Git befinden. Dies würde bedeuten, dass ich ein Projekt mit allen Abhängigkeiten außerhalb erstellen muss, aber native Umgebungen auf dem lokalen Computer, in der Cloud und in der CI/CD-Pipeline möglicherweise unterschiedlich sind, sodass ich die Leistungsfähigkeit von Docker in diesem Fall überhaupt nicht nutzen werde. Es stellt die Verwendung von Docker in Frage und Docker kann ich in diesem Projekt nicht fallen lassen.

    – Dmytro Chasovskyi

    23. September 2020 um 11:18 Uhr

  • Lege das Dockerfile und andere Artefakte in den Repositories selbst. git clone ... && docker build. Sie erhalten immer noch konsistente Ergebnisse aus einem konsistenten Quellbaum.

    – David Labyrinth

    23. September 2020 um 11:53 Uhr

Wie fuge ich eine SSH Passphrase zu Docker hinzu und entferne
masseyb

Mit buildkit aktiviert:

Der Docker-Build verfügt über eine Option –ssh, damit die Docker-Engine SSH-Agent-Verbindungen weiterleiten kann.

Du kannst ssh-add Ihre privaten Schlüssel zu a ssh-agent.

Von dem ssh-add man Seiten:

Wenn für eine Datei eine Passphrase erforderlich ist, ssh-add fragt den Benutzer nach der Passphrase.

Von dem ssh-agent man Seiten:

Die Idee ist, dass der Agent auf dem lokalen PC, Laptop oder Terminal des Benutzers ausgeführt wird. Authentifizierungsdaten müssen auf keinem anderen Computer gespeichert werden, und Authentifizierungs-Passphrasen gehen niemals über das Netzwerk. Die Verbindung zum Agenten wird jedoch über SSH-Remote-Logins weitergeleitet, und der Benutzer kann so die durch die Identitäten gegebenen Privilegien überall im Netzwerk auf sichere Weise nutzen.

Die ssh-agent wird niemals einen privaten Schlüssel über seinen Anfragekanal senden. …

Beispiel Dockerfile aus dem Dokument:

# syntax=docker/dockerfile:experimental
FROM alpine

# Install ssh client and git
RUN apk add --no-cache openssh-client git

# Download public key for github.com
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

# Clone private repository
RUN --mount=type=ssh git clone [email protected]:myorg/myproject.git myproject

Erstellen Sie das Bild: docker build --ssh default

  • Es gibt eine einzige Anmerkung dazu, die in Windows default funktioniert nicht, also müssen Sie den vollständigen Pass angeben default=C:/.ssh/id_rsa (oder Ihre id_rsa Speicherort)

    – Dmytro Chasovskyi

    24. September 2020 um 6:12 Uhr

1001260cookie-checkWie füge ich eine SSH-Passphrase zu Docker hinzu und entferne sie, nachdem sie verwendet wurde?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy