Pour que ssh-agent fonctionne avec git, exécutez la commande shell de windows.

j'ai installé msysgit, avec OpenSSH. Je me connecte à une gitosis repo. De la Git bash, j'ai créé un .profile fichier qui fonctionne ssh-agent (si pas déjà en cours d'exécution) à chaque fois que git bash est ouvert, en utilisant ce script

SSH_ENV=$HOME/.ssh/environment

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
     echo succeeded
     chmod 600 ${SSH_ENV}
     . ${SSH_ENV} > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi

j'utilise aussi git extensions, qui exécute la commande git depuis L'invite de commande Windows, pas git bash. Donc, ssh ne voit pas l'agent SSH qui court. Est-il possible de résoudre ce problème?

31
demandé sur Braiam 2010-09-08 18:53:02

7 réponses

j'ai eu le même problème que toi, alors j'ai essayé d'ajouter ce code

#! /bin/bash 
eval `ssh-agent -s` 
ssh-add ~/.ssh/*_rsa

dans le fichier .bashrc dans mon répertoire home. Et ça marche!!!

40
répondu Fery Wardiyanto 2016-01-19 09:33:28

Pour msysgit vous pourriez avoir à modifier un peu la solution proposée par https://help.github.com/articles/working-with-ssh-key-passphrases

declare -x 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 -f -u $USERNAME | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
    if [ $? -eq 0 ]; then
  test_identities
    fi
else
    if [ -f "$SSH_ENV" ]; then
    . "$SSH_ENV" > /dev/null
    fi
    ps -f -u $USERNAME | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
    if [ $? -eq 0 ]; then
        test_identities
    else
        start_agent
    fi
fi

comme vous pouvez le remarquer, le seul changement que j'ai fait était dans l'appel ps, puisque msysgit n'utilise pas-U mais-u

25
répondu Braiam 2013-04-08 02:33:59

Même si vous avez probablement résolu... utilisez le eval commande de faire l' ssh_agent processus de bâton:

eval `ssh-agent.exe`

puis utilisez ssh-add pour ajouter les touches dont vous avez besoin.

22
répondu Cu7l4ss 2014-09-08 22:56:18

sur Windows 10 cela a fonctionné pour moi

  1. exécuter git bash
  2. touch ~/.profile
  3. start ~/.profile ouvrir .profile
  4. ajouter ce qui suit à .profile
#! /bin/bash 
eval `ssh-agent -s` 
ssh-add ~/.ssh/*_rsa

Ceci est basé sur cette réponse. La seule différence est que .bashrc ne fonctionne pas, au lieu .profile a fonctionné.

9
répondu Thoran 2017-05-23 10:31:26

vous pouvez envelopper votre exécutable git avec un script qui génère votre .profile, provoquant l' ssh-agent variables d'environnement à charger.

soit mettre un script appelé git dans un répertoire plus tôt dans votre chemin que le vrai git, ou configurer les extensions git pour appeler votre wrapper à la place du vrai git.

1
répondu Andrew Aylett 2011-06-03 12:17:31

j'ai trouvé que la façon la plus douce d'y arriver était D'utiliser le concours de beauté comme agent SSH et plink.

vous devez avoir une session putty configurée pour le nom d'hôte utilisé dans votre télécommande.

vous aurez aussi besoin de plink.exe qui peut être téléchargé à partir du même site que putty.

et vous avez besoin de concours avec votre clé chargée. J'ai un raccourci vers le concours dans mon dossier de démarrage qui charge ma clé SSH quand je me connecte.

Lorsque vous installez git-scm vous pouvez alors le spécifier pour utiliser tortoise / plink plutôt que OpenSSH.

l'effet net est que vous pouvez ouvrir git-bash chaque fois que vous voulez et push/pull sans être mis au défi pour les mots de passe.

il en est de même pour les sessions putty et WinSCP lorsque la clé du concours est chargée. Il rend la vie beaucoup plus facile (et sûre).

1
répondu Alasdair 2015-03-04 00:51:30

solution simple à deux cordescette réponse:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
0
répondu oklas 2017-10-13 20:07:44