web-dev-qa-db-fra.com

Connexion à github à l'aide de la clé SSH générée par PuTTY sous Windows 7

Sur une installation Windows 7 Enterprise par ailleurs parfaitement vierge:

  1. Installer PuTTY 0.62
  2. Créer une paire de clés publique/privée avec puttygen.exe
  3. Ajouter une clé publique pour coller dans OpenSSH allowed_keys au compte github
  4. Ajouter une clé privée à la reconstitution historique
  5. Installez msysgit 1.7.8 avec les options suivantes:
    • Utiliser Git à partir de l'invite de commande Windows
    • Utiliser (Tortoise) Plink a pointé pour corriger plink.exe
  6. Assurez-vous que l'empreinte github est ajoutée à know_hosts en vous connectant à github.com dans PuTTY et en acceptant l'empreinte.
  7. Éditez ~/.ssh/config comme suit:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile ~\.ssh\github.ppk
    

ssh -vvvT [email protected] donne: http://Pastebin.com/Tu3Fc6nJ . Notez que je suis invité à saisir la phrase secrète bien qu'elle ait été chargée avec succès dans pageant.

J'ai essayé: chmod 700 ~/.ssh; chmod 600 ~/.ssh/* à partir de Git Bash mais il n'y avait aucun effet tel que vérifié par ls -l.

Je dois noter que cette installation exacte fonctionnait sur une installation antérieure de Windows 7. Tout est identique pour autant que je sache.

Qu'est-ce que le travail génère des clés à partir de Git Bash. Cependant, je ne peux pas ajouter ces clés à la reconstitution historique, ce qui est très pénible. En effet, il semble que toute tentative d'utilisation de clés générées par PuTTY soit infructueuse.

Avez-vous une idée de ce qui empêche cela de fonctionner avec les journaux? Merci d'avance.

19
Radu

Vous confondez deux programmes entièrement distincts: PuTTY et OpenSSH.

  • plink et Pageant font partie de PuTTY. La commande ssh fait partie de OpenSSH. Il est difficile de savoir quel programme est utilisé par Git; vous devez vérifier la variable d'environnement %GIT_SSH% pour cela.

  • Les programmes utilisent différents protocoles d'agent; OpenSSH ne peut pas utiliser le Pageant de PuTTY; il a son propre ssh-agent (qui est malheureusement un peu compliqué à utiliser sous Windows).

  • PuTTY et plink stockent les paramètres de session dans la base de registre, modifiables dans l'interface de PuTTY. Ils n'utilisent rien dans ~/.ssh/; ce répertoire est uniquement utilisé par OpenSSH.

  • Les formats de clé privée utilisés par OpenSSH et PuTTY sont différents; vous ne pouvez pas utiliser une clé .ppk avec OpenSSH. Si vous avez généré la clé dans PuTTYgen, vous devez utiliser la commande "Exporter → OpenSSH".

    $ ssh -vvvT [email protected]
    OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
    ...
    debug2: key_type_from_name: unknown key type 'PuTTY-User-Key-File-2:'
    
19
grawity

J'ai élaboré un guide étape par étape pour obtenir la configuration Git pour Windows à l'aide de l'application Plink de PuTTY pour l'authentification SSH.

Suivez ci-dessous:


Installer

  1. Installez PuTTY.Zip disponible sur la page PuTTY Download Page ou téléchargez-le individuellement.

    • PuTTY:PuTTY.exe (ou par FTP )

      Le client SSH et Telnet lui-même.

    • Plink:plink.exe (ou par FTP )

      Une interface de ligne de commande pour le dos de PuTTY se termine.

    • Pageant:pageant.exe (ou par FTP )

      Un agent d'authentification SSH pour PuTTY, PSCP, PSFTP et Plink.

    • PuTTYgen:puttygen.exe (ou par FTP )

      Un utilitaire de génération de clé RSA et DSA.

  2. Générer des clés RSA et PPK

    1. En utilisant Git Bash, utilisez ssh-keygen pour générer une paire de clés publiques/privées RSA. Vous trouverez plus d’informations sur la procédure à suivre dans l’article officiel Génération de clés SSH .
    2. Dans PuTTYgen, importez votre clé ~/.ssh/id_rsa (privée) existante, via Conversions → Import key.
    3. Enregistrez la clé importée via le Save private key bouton comme ~/.ssh/id_rsa.ppk.
    4. Vous devriez maintenant avoir les clés suivantes dans votre répertoire ~/.ssh:

      • id_rsa: Clé RSA privée (OpenSSH)
      • id_rsa.pub: Clé RSA publique (OpenSSH)
      • id_rsa.ppk: Clé privée (PuTTY)
  3. Installez Git pour Windows .

    Assurez-vous que vous choisissez d'utiliser Plink.

    Git setup

    Remarque: Si vous avez déjà installé Git, vous pouvez simplement exécuter le programme d'installation à nouveau et définir Plink comme application SSH par défaut.

  4. Définissez vos chemins d'environnement.

    1. Dans Panneau de configuration , accédez à la vue Système.
    2. Choisissez Paramètres système avancés .
    3. Dans la fenêtre Propriétés système , cliquez sur l'onglet Avancé .
    4. Cliquez sur Environment variables….
    5. Ajoutez ce qui suit Variables système (si ce n'est déjà fait):

      • GIT_HOME: C:\Program Files\Git
      • GIT_SSH: C:\Program Files (x86)\PuTTY\plink.exe
    6. Ajoutez le répertoire binaire Git au chemin du système.

      • Path: %Path%;%GIT_HOME%\bin
  5. Ouvrez Pageant et chargez la clé ppk située à ~/.ssh/id_rsa.ppk.

    Note: Une fois que Pageant a démarré, vous pouvez cliquer sur son icône dans la barre d'état système située dans la barre des tâches, à côté de l'heure, à droite.

  6. Ouvrez PuTTY et connectez-vous pour tester votre connexion via SSH et ajoutez la clé du serveur en tant qu'hôte connu.

    PuTTY

    Exemples de noms d'hôtes:

  7. Lancez Git Bash.

    Vous devriez être capable de pousser et de tirer de votre hôte distant sans entrer un mot de passe à chaque fois.


Raccourci

Vous pouvez placer un raccourci dans votre répertoire de démarrage pour charger automatiquement votre clé chaque fois que vous vous connectez à votre compte Windows.

Via script de lot

Cette idée a été inspirée par une réponse à cette question:

Super utilisateur: Comment créer un raccourci depuis CMD? .

REM |==================================================================|
REM | Pageant Autoload.bat                                             |
REM |                                                                  |
REM | This script creates a shortcut for auto-loading a PPK (key) in   |
REM | Pageant by writing a temporary VB script and executing it. The   |
REM | following information below is added to the shortcut.            |
REM |                                                                  |
REM | Filename  : Pageant Autoload                                     |
REM | Target    : pageant.exe                                          |
REM | Arguments : id_rsa.ppk                                           |
REM | Start in  : ~/.ssh                                               |
REM |==================================================================|
@echo off

REM |==================================================================|
REM | Global Values - Do not touch these!                              |
REM |==================================================================|
SET VBSCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
SET STARTUP_DIR=Microsoft\Windows\Start Menu\Programs\Startup
SET STARTUP_USER_DIR=%APPDATA%\%STARTUP_DIR%
SET STARTUP_ALL_USERS_DIR=%PROGRAMDATA%\%STARTUP_DIR% REM Alternative

REM |==================================================================|
REM | Shortcut Values - You can change these to whatever you want.     |
REM |==================================================================|
SET FILENAME=Pageant Autoload.lnk
SET TARGET=%PROGRAMFILES(x86)%\PuTTY\pageant.exe
SET ARGUMENTS=id_rsa.ppk
SET START_IN=%%USERPROFILE%%\.ssh
SET DESCRIPTION=Autoload PuTTY key with Pageant on startup (Ctrl+Alt+S)
SET HOTKEY=CTRL+ALT+S

REM |==================================================================|
REM | Write a new VB script, on the fly; execute and delete it.        |
REM |==================================================================|
ECHO Set oWS = WScript.CreateObject("WScript.Shell") >> %VBSCRIPT%
ECHO sLinkFile = "%STARTUP_USER_DIR%\%FILENAME%" >> %VBSCRIPT%
ECHO Set oLink = oWS.CreateShortcut(sLinkFile) >> %VBSCRIPT%
ECHO oLink.TargetPath = "%TARGET%" >> %VBSCRIPT%
ECHO oLink.Arguments = "%ARGUMENTS%" >> %VBSCRIPT%
ECHO oLink.WorkingDirectory = "%START_IN%" >> %VBSCRIPT%
ECHO oLink.Description = "%DESCRIPTION%"  >> %VBSCRIPT%
ECHO oLink.HotKey = "%HOTKEY%" >> %VBSCRIPT%
ECHO oLink.Save >> %VBSCRIPT%
CScript //Nologo %VBSCRIPT%
DEL %VBSCRIPT% /f /q

Via l'explorateur Windows

  1. Accédez au répertoire de démarrage dans l'Explorateur Windows.

    • Le répertoire utilisateur Startup/ (préféré) se trouve à l'adresse suivante:

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • Le répertoire de tous les utilisateurs Startup/ est situé à:

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. Cliquez avec le bouton droit de la souris dans le dossier et sélectionnez New → Shortcut

  3. Dans la boîte de dialogue Créer un raccourci , entrez les informations suivantes.

    • Emplacement: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • Nom: Pageant Autoload
  4. Cliquez avec le bouton droit sur le nouveau raccourci et choisissez Properties dans le menu contextuel.

  5. Modifiez les champs suivants sous l'onglet Raccourci :

    • Cible: "%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • Commencez par: %USERPROFILE%\.ssh


    Remarques:

    1. Si vous utilisez un système d'exploitation Windows 32 bits, vous devez utiliser la variable d'environnement %PROGRAMFILES% au lieu de %PROGRAMFILES(x86)%.

    2. Si vous avez placé votre raccourci dans le répertoire de démarrage de tous les utilisateurs, assurez-vous que l'utilisateur actuel a une clé id_rsa.ppk dans son répertoire ~/.ssh sinon la clé ne se chargera pas automatiquement.


Remarques de clôture

Voilà. La prochaine fois que vous vous connecterez à votre profil Windows, vous serez invité à entrer un mot de passe pour entrer le mot de passe de votre clé. Si vous n'avez pas défini de mot de passe sur votre clé, celle-ci doit être chargée automatiquement sans invite.

Si vous n'êtes pas sûr que votre clé chargée affiche les clés actuelles dans Pageant en sélectionnant Afficher les clés dans le menu contextuel pour Pageant dans la barre d'état système.

20
Mr. Polywhirl

En clair

debug3: il ne s'agit pas d'un fichier de clé RSA1 /c/Users/Radu/\.ssh\github.ppk.

debug2: key_type_from_name: type de clé inconnue 'PuTTY-User-Key-File-2

Puttygen peut construire différentes clés, Github veut SSH1-RSA (?, I utilise les clés ssh2 avec Pageant sur github)

Ajoute

Voir aussi cet article sur le débogage des problèmes de pageant avec Github

>plink.exe -v -agent [email protected]
Looking up Host "github.com"
Connecting to 207.97.227.239 port 22
Server version: SSH-2.0-OpenSSH_5.1p1 Debian-5github2
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "git".
Trying Pageant key #0
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Authenticating with public key "github/lazybadger" from agent
Sending Pageant's response
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Access granted
Opened channel for session
Server refused to allocate pty
Started a Shell/command
Hi lazybadger! You've successfully authenticated, but GitHub does not provide Shell access.
Server sent command exit status 1
Disconnected: All channels closed
4
Lazy Badger