web-dev-qa-db-fra.com

SSH cherche au mauvais endroit la paire de clés publique/privée sous Windows

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.

35
Michael Morisy

Compris comment définir manuellement mon répertoire de base dans Windows XP:

  1. Clic droit "Poste de travail"
  2. Choisissez l'onglet "Avancé"
  3. Cliquez sur le bouton "Variables environnementales"
  4. Sous la section "Variables système", cliquez sur "Nouveau".
  5. Dans le "Nom de la variable", entrez "home".
  6. Dans "Valeur de la variable", entrez le chemin d'accès à votre profil.

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)

65
Michael Morisy

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 .

8
go2null

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.
2
craig

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.

2
Bouke Versteegh

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.

0
nathanchere

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

0
rofrol