2 votes

`ssh-add` est réinitialisé à chaque fois sous Cygwin

J'utilise un terminal cygwin sous Windows 10. Mais je suis confronté à un problème de git via ssh . Bien que Git Bash le terminal fonctionne à chaque fois, cygwin a besoin ssh-add à chaque fois. Que se passe-t-il dans mon cygwin ?

$ which git
/cygdrive/c/Program Files/Git/cmd/git
$ ssh-add -l
Could not open a connection to your authentication agent.
$ eval `ssh-agent`
Agent pid 13900
$ ssh-add -l
The agent has no identities.
$ ssh -vT git@github.com
OpenSSH_7.5p1, OpenSSL 1.0.2k  26 Jan 2017
debug1: Connecting to github.com [192.30.253.112] port 22.
debug1: Connection established.
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /cygdrive/c/Users/jef/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.5
debug1: Remote protocol version 2.0, remote software version libssh_0.7.0
debug1: no match: libssh_0.7.0
debug1: Authenticating to github.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /cygdrive/c/Users/jef/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/Users/jef/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
Enter passphrase for key '/cygdrive/c/Users/jef/.ssh/id_rsa':
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([192.30.253.112]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
Hi jojef! You've successfully authenticated, but GitHub does not provide shell access.
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2664, received 1848 bytes, in 0.1 seconds
Bytes per second: sent 35785.4, received 24824.1
debug1: Exit status 1

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /cygdrive/c/Users/jef/.ssh/id_rsa:
Identity added: /cygdrive/c/Users/jef/.ssh/id_rsa (/cygdrive/c/Users/jef/.ssh/id_rsa)
$ git pull
Already up-to-date.

Restart cygwin terminal

$ git pull
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

J'ai constaté que l'invite de commande de Windows fonctionne correctement.

C:\Users\jef\work\movie_dialog>git pull
Enter passphrase for key '/c/Users/jef/.ssh/id_rsa':
Already up-to-date.
C:\Users\jef\work\movie_dialog>where git
C:\Program Files\Git\cmd\git.exe

Mise à jour

J'ai référencé le lien de VonC, puis créé ~/.bash_profile pas bashrc . Je ne suis pas sûr .bashrc n'a pas fonctionné. Alors, je peux tirer ! La phrase de passe ne doit être utilisée qu'une seule fois pour chaque connexion à Windows. Lancement automatique de ssh-agent sur Git pour Windows

1voto

VonC Points 414372

Si vous avez définissez votre .bash_profile sur Cygwin il vous demandera votre phrase de passe à chaque nouvelle session Cygwin, et votre pull git réussira.

Sous Windows, apparemment, vous entrez votre phrase de passe à chaque fois, mais vous pouvez l'éviter avec un similaire ~/.bashrc à partir de l'application Windows git bash .

Comme je mentionné auparavant git est susceptible d'être différence entre Cygwin et Git pour Windows .


créé ~/.bash_profile pas bashrc . Je ne suis pas sûr .bashrc n'a pas fonctionné. Alors, je peux tirer !

Comme mentionné ici : .bashrc n'est lu que par un shell à la fois interactif et sans login. Mais l'ouverture d'une session cygwin pourrait être considérée comme un "login", ce qui signifie que seulement .bash_profile est lu.
C'est pourquoi la plupart des gens finissent par dire à leur .bash_profile à lire également .bashrc avec quelque chose comme :

[[ -r ~/.bashrc ]] && . ~/.bashrc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X