410 Stimmen

Starten Sie ssh-agent beim Anmelden

Ich habe eine Site als Remote-Git-Repo, das von Bitbucket.com unter Verwendung eines SSH-Alias abruft. Ich kann den ssh-agent manuell auf meinem Server starten, aber ich muss dies jedes Mal tun, wenn ich mich über SSH anmelde.

Ich starte den ssh-agent manuell:

eval ssh-agent $SHELL

Dann füge ich den Agenten hinzu:

ssh-add ~/.ssh/bitbucket_id

Dann erscheint es, wenn ich Folgendes mache:

ssh-add -l

Und dann bin ich bereit. Gibt es eine Möglichkeit, diesen Prozess zu automatisieren, damit ich das nicht jedes Mal machen muss, wenn ich mich anmelde? Der Server läuft auf RedHat 6.2 (Santiago).

2voto

Knelis Punkte 21

Ich mag deine Antworten sehr. Es hat das Arbeiten von cygwin / linux Hosts viel einfacher gemacht. Ich habe Start- und Endfunktionen kombiniert, um es sicher zu machen.

SSH_ENV="$HOME/.ssh/.agent_env"

function start_agent {
    echo "Initialisiere neuen SSH-Agent..."

    eval `/usr/bin/ssh-agent`
    echo 'export SSH_AUTH_SOCK'=$SSH_AUTH_SOCK >> ${SSH_ENV}
    echo 'export SSH_AGENT_PID'=$SSH_AGENT_PID >> ${SSH_ENV}

    echo erfolgreich
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

# SSH-Einstellungen laden, wenn vorhanden
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} funktioniert nicht unter Cygwin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

# Erstellen unseres eigenen Hardlinks zum Socket (mit zufälligem Namen)
MYSOCK=/tmp/ssh_agent.${RANDOM}.sock
ln -T $SSH_AUTH_SOCK $MYSOCK
export SSH_AUTH_SOCK=$MYSOCK

end_agent()
{
    # Wenn wir der letzte Halter eines Hardlinks sind, dann den Agenten beenden
    nhard=`ls -l $SSH_AUTH_SOCK | awk '{print $2}'`
    if [[ "$nhard" -eq 2 ]]; then
        rm ${SSH_ENV}
        /usr/bin/ssh-agent -k
    fi
    rm $SSH_AUTH_SOCK
}
trap end_agent EXIT
set +x

2voto

CreationTribe Punkte 562

Ich benutze das ssh-ident Werkzeug dafür.

Aus seiner man-Seite:

ssh-ident - Starten und nutzen von ssh-agent und Laden von Identitäten nach Bedarf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X