Frage

Ich habe meine git-Repository über ssh geklont. Also, jedes Mal, wenn ich mit dem Ursprung Master kommunizieren durch Drücken oder Ziehen, muss ich mein Passwort neu eingeben. Wie kann ich configure git, so dass ich brauche nicht mein Passwort mehrmals eingeben?

War es hilfreich?

Lösung

Versuchen ssh-add, müssen Sie ssh-agent Ihren privaten Schlüssel zu laufen und halten

(Ok, auf die aktualisierte Frage reagiert, zunächst ssh-keygen betreiben einen öffentlichen und einen privaten Schlüssel zu erzeugen, wie Jefromi < a href = „https://stackoverflow.com/a/1595858/450913“> erklärt . Sie setzen den öffentlichen Schlüssel auf dem Server. Sie ein Passwort verwenden sollten, wenn Sie dies nicht tun Sie das Äquivalent haben, ein Klartext-Passwort in Ihrem privaten Schlüssel. Aber wenn Sie das tun, dann müssen Sie sich als eine praktische Angelegenheit ssh-agent wie unten erläutert.)

Sie möchten ssh-agent im Hintergrund ausgeführt werden, wie Sie sich einloggen. Wenn Sie sich anmelden, ist die Idee ssh-add einmal und nur einmal zu laufen, um dem Agenten Ihr Passwort zu geben, Ihre Schlüssel zu entschlüsseln. Der Agent dann sitzt nur im Speicher mit dem Schlüssel entriegelt und geladen, bereit, jedes Mal, wenn irgendwo ssh zu verwenden.

All ssh-Familie Befehle 1 wird dann die Agenten beraten und automatisch in der Lage sein, Ihren privaten Schlüssel zu verwenden.

Auf OSX (err, macOS ), GNOME und KDE-Systeme wird ssh-agent in der Regel automatisch für Sie ins Leben gerufen. Ich werde die Einzelheiten für den Fall durchgehen, wie ich, Sie auch eine Cygwin oder anderen Windows-Umgebung haben, wo dies sicherlich nicht für Sie getan wird.

Starten Sie hier:. man ssh-agent

Es gibt verschiedene Möglichkeiten, um die Agenten automatisch ausgeführt werden. Als die Mann-Seite erklärt, können Sie es so laufen, dass es ein Elternteil aller Sitzung anderer Prozesse Ihrer Login ist. Auf diese Weise werden die Umgebungsvariablen bietet es automatisch in allen Schalen sein. Wenn Sie (später) invoke ssh-add oder ssh sowohl Zugriff auf die Mittel haben werden, weil sie alle die Umgebungsvariablen mit Magie Buchse Pfadnamen oder was auch immer haben.

Alternativ können Sie die Agenten als ein gewöhnliches Kind laufen, speichern Sie die Umgebungseinstellungen in einer Datei und Quelle, die Datei in jedem Shell, wenn es beginnt.

Meine OSX und Ubuntu-Systeme automatisch den Agenten Start-Setup tun, so alles, was ich tun ssh-add einmal ausgeführt wird. Versuchen Sie ssh-add laufen und sehen, ob es funktioniert, wenn ja, dann müssen Sie nur noch das tun einmal pro Neustart.

Mein Cygwin System benötigt es manuell durchgeführt, so dass ich dies tat in meinem .profile und ich habe .bashrc Quelle .profile:

. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
        ssh-agent > .agent
        . .agent > /dev/null
}

Die .agent Datei wird automatisch durch das Skript erstellt; es enthält die Umgebungsvariablen Definitionen und Exporte. Die oben versucht, die .Mittel Datei zu beziehen, und dann versucht, die Agenten ps(1). Wenn es nicht funktioniert, beginnt er einen Agenten und erstellt eine neue Agent-Datei. Sie können auch ssh-add nur laufen und wenn es fehlschlägt einen Agenten starten.


1. Und auch lokaler und Remote-sudo mit der rechten pam Erweiterung.

Andere Tipps

ein ähnliches Problem mit dem GitHub hat, weil ich HTTPS-Protokoll wurde mit. Um zu überprüfen, welches Protokoll Sie verwenden nur ausführen

git config -l

und Blick auf der Linie mit remote.origin.url beginnen. So schalten Sie Ihr Protokoll

git config remote.origin.url git@github.com:your_username/your_project.git

Dies ist über ssh Konfiguration nicht git. Wenn Sie nicht bereits haben, sollten Sie ssh-keygen (mit einem leeren Passwort) verwenden, um ein Schlüsselpaar zu erstellen. Anschließend kopieren Sie den öffentlichen Schlüssel zum Remote-Ziel mit ssh-copy-id. Es sei denn, Sie benötigen mehrere Schlüssel (zum Beispiel ein sicherer eines mit einem Passwort für andere Zwecke) haben oder Sie haben einige wirklich seltsame Mehr Identität Sachen passiert, es ist ganz einfach:

ssh-keygen   # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host

Edit: Sie sollten wirklich nur lesen DigitalRoss Antwort, aber: wenn Sie Schlüssel mit Paßphrasen verwenden, werden Sie zur Verwendung ssh-add <key-file> müssen sie ssh-agent hinzuzufügen (und offensichtlich eine ssh-agent zu starten, wenn Ihre Distribution nicht bereits für Sie ausgeführt haben).

Stellen Sie sicher, dass, wenn Sie das Repository geklont, Sie tut dies mit der SSH-URL und nicht die HTTPS; in der Klon-URL-Box des Repo, wählen Sie das SSH-Protokoll, bevor Sie die URL zu kopieren. Siehe Bild unten:

eingeben Bild Beschreibung hier

Wenn Sie geklont mit HTTPS (empfohlen), dann: -

git config --global credential.helper cache

und dann

git config --global credential.helper 'cache --timeout=2592000'
  • timeout = 2592000 (30 Tage in Sekunden) Caching für 30 Tage zu ermöglichen (oder was auch immer zusagt).

  • Jetzt einen einfachen git Befehl ausführen, den Benutzername und Passwort erforderlich ist.

  • Geben Sie Ihre Zugangsdaten einmal und ist jetzt Caching für 30 Tage aktiviert.

  • Versuchen Sie es erneut mit jedem git Befehl und jetzt brauchen Sie keine Anmeldeinformationen.

  • Für weitere Informationen: - Caching Ihre GitHub Kennwort in Git

Hinweis : Sie müssen Git 1.7.10 oder höher, um den Berechtigungsnachweis Helfer verwenden. Beim Systemneustart, könnte müssen wir wieder das Passwort eingeben.

Muein Gedanken für die Erweiterung, die Dateien zu bearbeiten lieber direkt über Befehle in git-bash oder Terminal ausgeführt wird.

Zum .git Verzeichnis des Projekts (Projektstamm auf dem lokalen Computer) und öffnen Sie die ‚config‘ Datei. Dann suchen Sie nach [remote "Ursprung"] und die URL Config wie folgt festgelegt:

[remote "origin"]
    #the address part will be different depending upon the service you're using github, bitbucket, unfuddle etc.
    url = git@github.com:<username>/<projectname>.git

Ich denke, es gibt zwei verschiedene Dinge hier. Die erste ist, dass normale SSH-Authentifizierung muss der Benutzer das Passwort des Kontos zu setzen (wobei das Account-Passwort gegen verschiedene Methoden authentifiziert werden, abhängig von der sshd-Konfiguration).

können Sie vermeiden, dass die Passwort-Zertifikate setzen. Mit Zertifikaten müssen Sie noch ein Passwort setzen, aber dieses Mal ist das Passwort Ihres privaten Schlüssels (die von dem Konto des Passwort unabhängig sind).

Um dies zu tun, Sie die Anweisungen wies darauf hin, durch steveth45 folgen können:

  

Mit Public Key Authentication .

Wenn Sie das Zertifikat des Passwort jedes Mal, vermeiden wollen, setzen dann können Sie ssh-agent, Wie von DigitalRoss

verwenden
  

Die genaue Art und Weise Sie dies tun, hängt von Unix vs Windows, aber im Wesentlichen müssen Sie ssh-agent im Hintergrund ausgeführt werden, wenn Sie sich anmelden, und dann das erste Mal, wenn Sie sich anmelden, laufen ssh-add den Agenten geben Sie Ihre Passphrase. Alle ssh-Familie Befehle werden dann die Agenten konsultieren und automatisch, Ihr Passwort abholen.

     

Starten Sie hier:. Mann ssh-agent

Das einzige Problem von ssh-agent ist, dass auf * nix zumindest, müssen Sie auf jeden neuen Shell die Zertifikate Passwort setzen. Und dann wird das Zertifikat „geladen“ und Sie können es verwenden, das gegen einen SSH-Server zu authentifizieren, ohne jede Art von Passwort zu setzen. Aber das ist an diesem Shell.

Mit keychain kann dasselbe wie ssh-agent tun aber „systemweite“. Sobald Sie Ihren Computer einschalten, können Sie eine Shell öffnen und das Passwort des Zertifikats stellen. Und dann wird jeder andere Shell verwenden, dass „geladen“ Zertifikat und Ihr Passwort wird nie wieder gefragt, bis Sie Ihren PC neu starten.

hat Gnome eine ähnliche Anwendung namens Gnome Keyring , die Sie für Ihr Zertifikat-Passwort fragt das erste Mal, es verwendet, und dann speichert er es sicher, so dass Sie nicht mehr gefragt werden.

Wenn Sie Github verwenden, sie haben ein sehr schönes Tutorial, dass es deutlicher erklärt (zumindest für mich).

http://help.github.com/set-up-git-redirect /

ssh-keygen -t rsa

Wenn Sie nach einem Passwort gefragt, leer lassen heißt, nur drücken Sie die Eingabetaste. so einfach ist das !!

Versuchen Sie, diese aus dem Feld von Ihnen drängen

    ssh git@github.com

Sie sollten dann eine willkommene Antwort von Github bekommen und fein dann Push sein werden.

musste ich Klon ein git Repo von einem Server, der nicht Login wetteifern SSH-Schlüssel erlaubte aber nur mit einem Benutzer / Passwort. Ich fand keine Möglichkeit, die Git-Plugin zu konfigurieren, dass eine einfache Benutzer / Passwort-Kombination zu verwenden, so dass ich die folgenden Shell-Befehl hinzugefügt, wie Pre-Build-Schritt auf einer Linux-Maschine zu bauen, die erwarten, dass auf das Werkzeug hängt (apt-get install erwarten):

Das ist kein guter Weg, dieses Problem als Kennwort PROBLEME ALS KLARTEXT in der Konfiguration GEZEIGT UND MELDET DER JENKINS JOB! NUTZEN es nur, wenn es keine Möglichkeit, die RSA-KEY AUTHENTIFIZIERUNG IS oder eine andere Konfiguration possibilités!

rm -rf $WORKSPACE &&
expect -c 'set timeout -1; spawn git clone USER@MYHOST:/MYPATH/MYREPO.git $WORKSPACE; expect "password:" {send "MYPASSWORD\r"}; expect eof'

Fügen Sie eine Zeile AddKeysToAgent yes auf der Oberseite der .ssh / config-Datei. Ofcourse ssh-agent vorher ausgeführt werden muss. Wenn es nicht (Kontrolle durch prep ssh-agent) läuft, dann laufen sie einfach eval $(ssh-agent)

Nun ist der Schlüssel geladen system in den Speicher und Sie nicht wieder in dem Passwort eingeben müssen.

Die Quelle der Lösung https://askubuntu.com/questions/362280 / Enter-ssh-Passwort-once / 853578 # 853578

Ich habe versucht, zu sein das Passwort zu vermeiden Eingabe die ganze Zeit auch, weil ich bin mit ssh auf Windows. Was ich tat, war meine .profile-Datei zu ändern, so dass ich mein Passwort eine in einer bestimmten Sitzung ein. Das ist also das Stück Code:

    SSH_ENV="$HOME/.ssh/environment"

    # start the ssh-agent
    function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
        echo succeeded
        chmod 600 "$SSH_ENV"
        . "$SSH_ENV" > /dev/null
        ssh-add
    }

    # test for identities
    function test_identities {
        # test whether standard identities have been added to the agent already
        ssh-add -l | grep "The agent has no identities" > /dev/null
        if [ $? -eq 0 ]; then
            ssh-add
            # $SSH_AUTH_SOCK broken so we start a new proper agent
            if [ $? -eq 2 ];then
                start_agent
            fi
        fi
    }

    # check for running ssh-agent with proper $SSH_AGENT_PID
    if [ -n "$SSH_AGENT_PID" ]; then
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
      test_identities
        fi
    # if $SSH_AGENT_PID is not properly set, we might be able to load one from
    # $SSH_ENV
    else
        if [ -f "$SSH_ENV" ]; then
      . "$SSH_ENV" > /dev/null
        fi
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
            test_identities
        else
            start_agent
        fi
    fi

so mit diesem i mein Passwort eingeben einmal in einer Sitzung ..

habe ich versucht, alle diese Vorschläge und mehr, nur so konnte ich git Klon von meiner AWS-Instanz. Nichts hat geklappt. Ich betrogen schließlich aus Verzweiflung. Ich den Inhalt id_rsa.pub auf meinem lokalen Rechner kopiert und die beigefügte es zu ~ / .ssh / known_hosts auf meiner AWS-Instanz

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top