22 mayo, 2013

Utilizando Git, TortoiseGit y llave SSH en Windows

Luego de unas pruebas que en el inicio parecían sencillas para lograr acceder a un repositorio Git instalado remotamente al cual tengo acceso por medio de claves SSH, llegué a un resultado satisfactorio que -lo admito con algo de alegría- cada vez se parece más al manejo en Linux. Pero bueno, prefiero por explicar un poco comentando primero mi problema. La situación era la siguiente:

Tenía ya instalado TortoiseGit-1.8.3.0 64 bits, Git-1.8.1.2 (al cual le había asignado como cliente SSH a Tortoise) y Putty-0.62 en mi PC, Windows 7. Normalmente el acceso al servidor remoto CVS tan solo necesitaba la instalación de TortoiseCVS y el mismo podía reconocer la versión instalada de Putty para conectarse por SSH al servidor (habiendo cargado previamente la llave con extensión .ppk que se genera con la llave pública y privada) y realizar la identificación del usuario. Todo era de cierta forma transparente. Sin embargo, con TortoiseGit, un cliente adicional de Putty aparece en el juego y además hay un supuesto TortoiseGitPlink que da ciertos problemas como el que me sucedía a mi. Al momento de hacer un git push o un git clone o cualquier cosa que involucrara el servidor aparecía el problema siguiente:

TortoiseGitPLink Fatal Error
Disconnected: No supported authentication methods available (server sent: publickey, gssapi-keyex, gssapi-with-mic)


Solución: Luego de una serie de desinstalaciones e instalaciones seguidas, encontré la instalación que no tiene problemas para obtener un buen espacio de trabajo para Git en Windows usando dichas claves SSH. Voici les étapes! Basado en: http://boredwookie.net/index.php/blog/git-part-2-get-tortoisegit-working-on-windows/

1- Descargar TortoiseGit-1.8.3.0-64bit.msi y Git-1.8.1.2-preview20130201.exe
2- Instalar TortoiseGit normalmente.
3- Ejecutar el instalador de Git. Seleccionar las opciones de ‘Use Git Bash Only’ y de ‘Use OpenSSH’. La segunda viene siendo bien importante.
4- Colocar la llave SSH (id_rsa) en la carpeta .ssh que debería estar localizada en el directorio del usuario, e.g. C:\Users\myUser.ssh\id_rsa (la carpeta .ssh puede ser facilmente creada por línea de comandos lanzando un mkdir .ssh)
5- En la configuración de TortoiseGit, ir a Network, y asignar como ‘SSH Client’: C:\Program Files (x86)\Git\bin\ssh.exe
6- Intenta un clone o un push o cualquier cosa que tenga acceso al servidor. Va a preguntarte tu contraseña de la llave SSH y … now it works!

Nota: Otras posibilidades para acceder a Git son:
- La consola de comandos ‘Git bash’ instalada con Git
- Con Eclipse (personalmente me gusta esta): Import, ’Projects from Git’, URI. Es importante confirmar en Window -> Preferences -> General -> Network Connections -> SSH2 que el cliente SSH está accediendo sin problema a las llaves disponibles en el sistema.

Enjoy it !!

RaC