J'essaie de configurer GIT sur mon ordinateur Windows XP, mais SSH continue de créer et de rechercher la paire de clés publique/privée dans des endroits non sensuels, par exemple. /.ssh/id_rsa
Existe-t-il un fichier de configuration dans l'installation GIT pour Windows où je peux le basculer vers mon répertoire de base ou un autre emplacement défini par l'utilisateur? Par défaut, il propose de créer de nouvelles paires de clés à l'adresse //.ssh/id_rsa, mais cela me donne l'erreur "Impossible de créer le répertoire '//.ssh'". Et quand je peux trouver un répertoire dans lequel je peux le créer, GIT ne le regardera pas.
Compris comment définir manuellement mon répertoire de base dans Windows XP:
Pour faire la même chose avec la commande Invite, faites:
setx HOME "your\path\to\home"
(Veuillez noter le suffixe x - Ceci est utilisé pour conserver le changement)
La méthode Recommandée de MSYS2 consiste à définir db_home
dans /etc/nsswitch.conf
dans votre répertoire personnel.
Crédit à @VarunAgw pour pointant dans la bonne direction.
Git-for-Windows inclut env
dans db_home
, qui devrait lire votre variable HOME
bash, mais il s'agit de non fiable .
J'avais un problème similaire sous Windows 7. La variable d'environnement HOME
semblait être définie correctement:
$ echo $HOME
C:\Users\craibuc
Cependant, les tentatives de connexion pour tester l'accès ssh
de github ont échoué:
$ ssh -Tv [email protected]
OpenSSH_6.6.1, OpenSSL 1.0.1i 6 Aug 2014
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
Could not create directory 'C/.ssh'.
debug1: identity file C/.ssh/id_rsa type -1
debug1: identity file C/.ssh/id_rsa-cert type -1
debug1: identity file C/.ssh/id_dsa type -1
debug1: identity file C/.ssh/id_dsa-cert type -1
debug1: identity file C/.ssh/id_ecdsa type -1
debug1: identity file C/.ssh/id_ecdsa-cert type -1
debug1: identity file C/.ssh/id_ed25519 type -1
debug1: identity file C/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
The authenticity of Host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the Host to the list of known hosts (C/.ssh/known_hosts).
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: C/.ssh/id_rsa
debug1: Trying private key: C/.ssh/id_dsa
debug1: Trying private key: C/.ssh/id_ecdsa
debug1: Trying private key: C/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
Pour une raison quelconque, ssh
tentait d'accéder à C/.ssh
.
Lorsque j'ai défini la variable à l'aide de setx HOME /c/users/craibuc
et que j'ai redémarré le shell, j'ai pu me connecter:
$ ssh -T [email protected]
Warning: Permanently added the RSA Host key for IP address '192.30.252.130' to the list of known hosts.
Hi craibuc! You've successfully authenticated, but GitHub does not provide Shell access.
Vérifiez which ssh
pour voir si vous utilisez /usr/bin/ssh
ou autre chose qui aurait pu être installé par accident.
Dans mon cas, ma ssh a été remplacée par Chocolatey après avoir installé rsync
. Après avoir exécuté choco uninstall rsync
, mon SSH fonctionnait à nouveau.
J'ai eu le même genre de problème lorsque vous utilisez une machine avec une stratégie de domaine qui définit le profil de l'utilisateur sur un lecteur réseau (dans ce cas, mappé sur Z:
).
En essayant de faire quoi que ce soit de Powershell, je recevais des messages comme celui-ci. La définition de la variable home
PATH n'a pas aidé.
git clone ssh://[email protected]:1234/myproject
Cloning into 'myproject'...
Could not create directory '/z/.ssh'.
The authenticity of Host '[mydomain.com]:1234 ([1.1.1.1]:1234)' can't be established.
RSA key fingerprint is 00:11:22:33:$4:55:66:77:88.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the Host to the list of known hosts (/z/.ssh/known_hosts).
Permission denied (publickey).
Please make sure you have the correct access rights
and the repository exists.
Lorsque j'ai cloné à partir de git bash, tout allait bien, car /z/.ssh
etc est un moyen valide de pointer sur Z:\.ssh
depuis un shell.
ln -s /c/Users/rofrol/.ssh /home/rofrol/
a travaillé pour moi.
Cela n'a pas:
$ echo $HOME
/c/Users/rofrol
$ cat ~/nsswitch.conf
db_home: /c/Users/rofrol
$ cat /home/rofrol/nsswitch.conf
db_home: /c/Users/rofrol
$ cat /etc/nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: files db
group: files db
db_enum: cache builtin
#db_home: cygwin desc
db_home: /c/Users/rofrol
db_Shell: cygwin desc
db_gecos: cygwin desc
# End /etc/nsswitch.conf
Probablement à cause de cela:
SSH nécessitera/home/$ USER
https://github.com/git-for-windows/git/issues/736#issuecomment-215123009