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
gnupg2mit dem Paketmanager Ihres Systems. - Auf WSL
- Installieren Sie Gpg4win auf der Windows-Seite.
- Installieren Sie
gpgin 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
gpgzuvor im Container verwendet haben, müssen Sie möglicherweise Dev Containers: Container neu erstellen ausführen, damit die Aktualisierung wirksam wird.