ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Git-Anmeldedaten mit Ihrem Container teilen

Die Dev Containers-Erweiterung bietet standardmäßig Unterstützung für die Verwendung lokaler Git-Anmeldedaten aus einem Container heraus. In diesem Abschnitt werden wir die beiden unterstützten Optionen durchgehen.

Wenn Sie Ihren Benutzernamen oder Ihre E-Mail-Adresse lokal nicht eingerichtet haben, werden Sie möglicherweise dazu aufgefordert. Sie können dies auf Ihrem lokalen Computer tun, indem Sie die folgenden Befehle ausführen

git config --global user.name "Your Name"
git config --global user.email "your.email@address"

Die Erweiterung kopiert Ihre lokale .gitconfig-Datei beim Start automatisch in den Container, sodass Sie dies nicht im Container selbst tun müssen.

Verwendung eines Anmeldeinformations-Helpers

Wenn Sie HTTPS zum Klonen Ihrer Repositories verwenden und einen konfigurierten Anmeldeinformations-Helper in Ihrem lokalen Betriebssystem haben, ist keine weitere Einrichtung erforderlich. Lokal eingegebene Anmeldedaten werden im Container wiederverwendet und umgekehrt.

Verwendung von SSH-Schlüsseln

Es gibt Fälle, in denen Sie Ihr Repository möglicherweise über SSH-Schlüssel anstelle eines Anmeldeinformations-Helpers klonen. Um dieses Szenario zu ermöglichen, leitet die Erweiterung automatisch Ihren lokalen SSH-Agenten weiter, wenn einer läuft.

Stellen Sie zunächst sicher, dass SSH-Agent-Weiterleitung auf dem Host aktiviert ist. Suchen Sie nach der Option AllowAgentForwarding in sshd_config (normalerweise unter /etc/ssh/sshd_config oder %programdata%\ssh\sshd_config). Wenn dies noch nicht der Fall ist, sollten Sie es auf yes setzen und den sshd-Dienst neu laden oder neu starten.

Sie können Ihre lokalen SSH-Schlüssel zum Agenten hinzufügen, wenn er läuft, indem Sie den Befehl ssh-add verwenden. Führen Sie diesen beispielsweise in einem Terminal oder PowerShell aus

ssh-add

Dies fügt die Standarddateien hinzu (~/.ssh/id_rsa, .ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 und ~/.ssh/identity). Wenn Sie einen bestimmten Schlüssel angeben möchten, fügen Sie einfach den Pfad dazu nach dem Befehl an.

Unter Windows und Linux erhalten Sie möglicherweise eine Fehlermeldung, da der Agent nicht läuft (macOS hat ihn normalerweise standardmäßig laufen). Befolgen Sie diese Schritte, um das Problem zu beheben

Windows:

Starten Sie eine lokale Administrator-PowerShell und führen Sie die folgenden Befehle aus

# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent

Linux

Starten Sie zuerst den SSH-Agenten im Hintergrund, indem Sie Folgendes in einem Terminal ausführen

eval "$(ssh-agent -s)"

Fügen Sie dann diese Zeilen zu Ihrer ~/.bash_profile oder ~/.zprofile (für Zsh) hinzu, damit er beim Anmelden gestartet wird

if [ -z "$SSH_AUTH_SOCK" ]; then
   # Check for a currently running instance of the agent
   RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
   if [ "$RUNNING_AGENT" = "0" ]; then
        # Launch a new instance of the agent
        ssh-agent -s &> $HOME/.ssh/ssh-agent
   fi
   eval `cat $HOME/.ssh/ssh-agent` > /dev/null
   ssh-add 2> /dev/null
fi

Ersetzen Sie in der letzten Zeile <ihr ssh key> durch Ihren spezifischen SSH-Schlüssel.

Zum Beispiel ssh-add $HOME/.ssh/id_ed25519 2> /dev/null

Wenn Sie auf Probleme stoßen, sollten Sie die bekannten Einschränkungen der Dev Containers-Erweiterung überprüfen.

GPG-Schlüssel teilen

Wenn Sie Ihre Commits mit GPG signieren möchten, können Sie auch Ihre lokalen Schlüssel mit Ihrem Container teilen. Informationen zum Signieren mit einem GPG-Schlüssel finden Sie in der Dokumentation von GitHub.

Wenn Sie GPG noch nicht eingerichtet haben, können Sie es für Ihre Plattform konfigurieren

  • Unter Windows können Sie Gpg4win installieren.
  • Unter macOS können Sie GPG Tools installieren.
  • Unter Linux installieren Sie lokal das Paket gnupg2 mit dem Paketmanager Ihres Systems.
  • Auf WSL
    • Installieren Sie Gpg4win auf der Windows-Seite.
    • Installieren Sie gpg in Ihrer WSL-Distribution. sudo apt install gpg
    • Registrieren Sie eine pinentry-GUI in Ihrer WSL-Distribution. echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf
    • Laden Sie den gpg-Agenten in WSL neu. gpg-connect-agent reloadagent /bye

Hinweis: Für Windows-Benutzer muss der GPG-Signaturschlüssel über die Windows-GUI oder CLI (powershell/cmd) konfiguriert werden und nicht in Git Bash. Ein Dev Container kann nicht auf die in Git Bash eingerichteten GPG-Schlüssel zugreifen, obwohl sie sich in Ihrem ~/.gnupg/-Ordner befinden und im Windows Explorer zugänglich sind.

Installieren Sie als Nächstes gnupg2 in Ihrem Container, indem Sie Ihre Dockerfile aktualisieren.

Zum Beispiel

RUN apt-get update && apt-get install gnupg2 -y

Oder wenn Sie als Nicht-Root-Benutzer ausführen

RUN sudo apt-get update && sudo apt-get install gnupg2 -y

Um Ihre Konfigurationsänderungen anzuwenden, müssen Sie den Container neu erstellen. Sie können dies tun, indem Sie Dev Containers: Container neu erstellen aus der Befehlspalette (F1) ausführen. Wenn der Container das nächste Mal gestartet wird, sollten Ihre GPG-Schlüssel auch im Container zugänglich sein.

Hinweis: Wenn Sie gpg zuvor im Container verwendet haben, müssen Sie möglicherweise Dev Containers: Container neu erstellen ausführen, damit die Aktualisierung wirksam wird.

© . This site is unofficial and not affiliated with Microsoft.