2016-07-12 17 views
1

Ich habe 2 SSH-Schlüssel für 2 verschiedene Konten auf Bitbucket.SSH Key fragt nach dem Start-Agent Passwort eingeben

Die unten ist meine bachrc Datei:

# Note: ~/.ssh/environment should not be used, as it 
#  already has a different purpose in SSH. 

env=$HOME/.ssh/agent.env 

# Note: Don't bother checking SSH_AGENT_PID. It's not used 
#  by SSH itself, and it might even be incorrect 
#  (for example, when using agent-forwarding over SSH). 

agent_is_running() { 
    if [ "$SSH_AUTH_SOCK" ]; then 
     # ssh-add returns: 
     # 0 = agent running, has keys 
     # 1 = agent running, no keys 
     # 2 = agent not running 
     ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_2 -l >/dev/null 2>&1 || [ $? -eq 1 ] 
    else 
     false 
    fi 
} 

agent_has_keys() { 
    ssh-add -l >/dev/null 2>&1 
} 

agent_load_env() { 
    . "$env" >/dev/null 
} 

agent_start() { 
    (umask 077; ssh-agent >"$env") 
    . "$env" >/dev/null 
} 

if ! agent_is_running; then 
    agent_load_env 
fi 

# if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need 
# to paste the proper path after ssh-add 
if ! agent_is_running; then 
    agent_start 
    ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_2 
elif ! agent_has_keys; then 
    ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_2 
fi 

unset env 

agent_stop() { 
    if [ ${SSH_AGENT_PID+1} == 1 ]; then 
     ssh-add -D 
     ssh-agent -k > /dev/null 2>&1 
     unset SSH_AGENT_PID 
     unset SSH_AUTH_SOCK 
    fi 
} 

agent_stop 

Warum nenne ich agent_stop?

Das ist zum Testen. Ich habe herausgefunden, dass beim Aufruf von agent_stop alle ssh-Schlüssel aus dem Agenten entfernt werden und beim erneuten Öffnen von git bash der Agent automatisch ssh-Schlüssel hinzufügt.

Aber nur id_rsa ruft keine Passphrase auf, die Eingabeaufforderung id_rsa_2 immer.

P/S: Der öffentliche Schlüssel von id_rsa_2 wird auf Bitbucket hinzugefügt.

Was fehlt mir dafür?

+0

Passphrase wird aufgefordert, da Sie eine Passphrase eingeben, wenn Schlüsselpaare generiert werden, IMHO. – gzh

+0

Hallo @gzh: Wir alle tun das, wenn ssh von ssh-keygen generieren. Wie können wir das überwinden? –

+3

Wenn Sie ssh-keygen ausführen, werden Sie in einem Schritt gefragt, ob Sie eine Passphrase benötigen. Sie können auf die Eingabetaste klicken, um eine Passphrase zu überspringen oder einzugeben, wenn mein Speicher korrekt funktioniert. – gzh

Antwort

0

Wenn Sie ssh-keygen laufen, gibt es einen Schritt, den Sie fragt, ob Sie ein Passwort benötigen, können Sie hier eingeben, um ein Passwort zu überspringen oder zu betreten, wenn mein Gedächtnis mir

richtig bedienen gzh von

1

Hinweis: wenn Sie ohne Passwort ein sSH-Schlüssel erzeugen

cd 
ssh-keygen -t rsa -f ".ssh/mykey" -C "key for xxx acess" -q -P "" 

Dann brauchen Sie nicht s sh-agent überhaupt

+0

Ich werde einen Blick darauf werfen. Danke für das Teilen –