web-dev-qa-db-fra.com

Fichier .ssh/config pour Windows (git)

Je cherchais une solution pour utiliser plusieurs clés SSH et j'ai compris que cela fonctionnerait avec un fichier de configuration situé dans le répertoire .ssh, mais cela ne fonctionnait pas sous Windows.

Mon problème est que j'utilise une clé privée pour accéder à un serveur git, il a donc l'aspect suivant: Ssh: //[email protected]/directory, cela fonctionne bien lorsque j'utilise TortoiseGit, car il est possible de choisir la clé privée.

Mais je veux utiliser le représentant git dans mon IntelliJ IDEA et il n’ya que l’option d’utiliser le shell natif de git et cela fonctionne également, si je mets la clé, appelée id_rsa, dans le dossier .ssh. Maintenant, je veux utiliser plusieurs clés SSH (donc ma clé aura le nom "id_rsa_test", comment puis-je configurer le fichier .ssh/config sous Windows, qui fonctionne avec un serveur git habituel?

La plupart des exemples que j'ai trouvés à ce jour sont uniquement destinés à être utilisés avec github.

15
mathew11

Si vous utilisez "Git pour Windows"

>cd c:\Program Files\Git\etc\ssh\

ajoutez à ssh_config comme suit:

AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_test

ps. vous avez besoin de la version ssh> = 7.2 (date de publication 2016-02-28)

14
LennyLip

Il existe une option IdentityFile que vous pouvez utiliser dans votre fichier ~/.ssh/config et spécifier le fichier de clé pour chaque hôte.

Host host_with_key1.net
  IdentityFile ~/.ssh/id_rsa

Host host_with_key2.net
  IdentityFile ~/.ssh/id_rsa_test

Plus d'infos: http://linux.die.net/man/5/ssh_config

Consultez également http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/

4
phts

Ces instructions fonctionnent bien sous Linux. Sous Windows, ils ne fonctionnent pas pour moi aujourd'hui.

J'ai trouvé une réponse qui m'aide, peut-être que cela aidera OP. J'ai embrassé beaucoup de grenouilles essayant de résoudre ce problème. Vous devez ajouter votre nouveau fichier de clé non standard avec "ssh-add"! Voici des instructions pour la solution miracle: Générer une nouvelle clé SSH et l'ajouter à ssh-agent . Une fois que vous connaissez les termes magiques de la recherche "ajouter une clé avec ssh-add dans Windows", vous trouverez de nombreux autres liens. 

Si j'utilisais souvent Windows, je trouverais un moyen de le rendre permanent. https://github.com/raeesbhatti/ssh-agent-helper .

L'agent de clé ssh recherche "id_rsa" par défaut et les autres clés connues. La clé créée avec un nom non standard doit être ajoutée à l'agent de clé ssh. 

Tout d'abord, je lance l'agent de clé dans le shell Git BASH:

$ eval $(ssh-agent -s)
Agent pid 6276

$ ssh-add ~/.ssh/Paul_Johnson-windowsvm-20180318
Enter passphrase for /c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318:
Identity added: /c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318 (/c/Users/pauljohn32/.ssh/Paul_Johnson-windowsvm-20180318)

Je passe ensuite dans le répertoire où je veux cloner le repo

$ cd ~/Documents/GIT/

$ git clone [email protected]:test/spr2018.git
Cloning into 'spr2018'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

Je me suis battu avec cela pendant très longtemps. 

Voici d'autres choses que j'ai essayées en cours de route

Au début, j'étais certain que c'était à cause des autorisations de fichiers et de dossiers. Sous Linux, j'ai vu les paramètres .ssh rejetés si le dossier n'est pas défini sur 700. Windows en a 711. Sous Windows, je ne trouve aucun moyen de créer des autorisations 700. 

Après avoir combattu avec ça, je pense que ça ne doit pas être le problème. Voici pourquoi . Si la clé s'appelle "id_rsa" alors git fonctionne! Git est capable de se connecter au serveur. Cependant, si je nomme le fichier de clé autrement, et que je corrige le fichier de configuration de manière cohérente, quoi qu'il arrive, git ne parvient pas à se connecter. Cela me fait penser que les autorisations ne sont pas le problème.

Une chose que vous pouvez faire pour résoudre ce problème est de regarder une sortie commentée À partir de commandes ssh en utilisant la clé configurée.

Dans le shell git bash, lancez ceci

$ ssh -T git@name-of-your-server

Notez que le nom d'utilisateur devrait être "git" ici. Si votre clé est configurée et que le fichier de configuration est trouvé, vous voyez ceci, comme je viens de le tester sur mon système Linux:

$ ssh -T [email protected]
Welcome to GitLab, Paul E. Johnson!

D'autre part, sous Windows, j'ai le même problème que vous avant d'appliquer "ssh-add". Il veut le mot de passe de git, ce qui est toujours un échec.

$ ssh -T [email protected]
[email protected]'s password:

Encore une fois, si je copie manuellement ma clé dans "id_rsa" et "id_rsa.pub", cela fonctionne correctement. Après avoir exécuté ssh-add, observez la victoire dans Windows Git BASH:

$ ssh -T [email protected]
Welcome to GitLab, Paul E. Johnson!

Vous entendrez le son de moi danser de joie si vous étiez ici.

Pour comprendre ce qui n'allait pas, vous pouvez lancer 'ssh' avec "-Tvv"

Sous Linux, je vois ceci quand cela réussit:

debug1: Offering RSA public key: pauljohn@pols124
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp SHA256:bCoIWSXE5fkOID4Kj9Axt2UOVsRZz9JW91RQDUoasVo
debug1: Authentication succeeded (publickey).

Sous Windows, lorsque cela échoue, je le vois à la recherche de noms par défaut:

debug1: Found key in /c/Users/pauljohn32/.ssh/known_hosts:1
debug2: set_newkeys: mode 1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 4294967296 blocks
debug2: key: /c/Users/pauljohn32/.ssh/id_rsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_dsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_ecdsa (0x0)
debug2: key: /c/Users/pauljohn32/.ssh/id_ed25519 (0x0)
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_rsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_dsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/pauljohn32/.ssh/id_ed25519
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
[email protected]'s password:

C’était l’allusion dont j’avais besoin, c’est-à-dire qu’il trouve mon fichier ~/.ssh/config mais n’essaie jamais la clé que j’ai envie d’essayer.

Je n'utilise que Windows de temps en temps et c'est frustrant. Peut-être que les personnes qui utilisent Windows tout le temps règlent ce problème et l’oublient. 

4
pauljohn32

Pour moi, n’ajouté que le fichier config qui se trouvait dans le répertoire ~/.ssh/config de mon système Linux dans le répertoire c:\Program Files\Git\etc\ssh\ de Windows.

Après cela, je pouvais utiliser tous les alias et paramètres que je utilisais normalement sur mes connexions Linux ou mes connexions via SSH sur Git Bash .

1
coderade