Configuración SSH para Bitbucket

bitbucket_logo

Para la comunicación entre mi máquina local y  el servidor de control de versiones Bitbucket por HTTPS, es necesario autenticarse (proporcionado mi usuario y contraseña) cada vez que quiero realizar una acción que se comunique con el servidor de  Bitbucket. En esta entrada les detallo como pueden utilizar el Secure Shell (SSH) para evitar tener que autenticarse a cada momento con Bitbucket y puedan hacer sus “git push” y “git pull” con mayor rapidez.

Paso 1: Conceptos iniciales sobre SSH

 

Para utilizar SSH con Bitbucket, se crea una identidad de SSH. Una identidad consiste en una llave privada y una llave pública que en su conjunto son un par de llaves(claves). La llave privada reside en su equipo local y la pública se sube a tu cuenta Bitbucket.

Una vez que subes la llave pública a tu cuenta, puedes usar SSH para conectarse con los repositorios que hayas creado  y con los de propiedad de otros, siempre que esos otros dueños te hayan dado permisos a de acceso a tu cuenta. Con la creación de SSH entre tu sistema local (computador) y el servidor Bitbucket, el sistema utiliza el par de llaves para automatizar la autenticación, por lo que no tendrá que introducir la contraseña cada vez que interactuas con tu repositorio Bitbucket.

Paso 2: Verificar si tiene una identidad SSH en su computador.

 

El shell Bash  de Git viene con un cliente SSH. Haga lo siguiente para verificar la instalación:

2.1. Haga doble clic en el icono de Git Bash para iniciar una sesión de terminal.
2.2. Escriba el siguiente comando para verificar que el cliente SSH está disponible:

gchacaltana@gchacaltana-ubuntu:/$ ssh -v
OpenSSH_5.9p1 Debian-5ubuntu1.2, OpenSSL 1.0.1 14 Mar 2012
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]

2.3. Si ha instalado ssh, vaya al siguiente paso. Si  no tienes ssh instalado, instale desde  su gestor de paquetes.

Paso 3: Configure su identidad por defecto.

 

Por defecto, el sistema añade todas las identidades en su directorio /Users/sunombre/.ssh. El siguiente procedimiento crea una identidad por defecto.

3.1.Abra una terminal en el sistema local.
3.2.Introduzca ssh-keygen en la línea de comandos.
3.3.El comando solicita un archivo para guardar la llave en:

gchacaltana@gchacaltana-ubuntu:/$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):

3.4.Presione [Enter] para aceptar la clave predeterminada (con nombre id_rsa)  o puede crear una clave con otro nombre. Para crear una clave con un nombre distinto del predeterminado, especifique la ruta completa a la tecla.

3.5.Ingresa  una contraseña cuando se te solicite.  Toda la interacción tiene una apariencia similar a la siguiente:

gchacaltana@gchacaltana-ubuntu:/$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_vagrant.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
0d:39:23:48:38:a6:99:25:23:eb:80:3d:fb:ef:a2:ff gchacaltana@gchacaltana-ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| .. |
|+ =. . . |
|o@ .. . = |
|B o . = |
|o o S . |
| .. |
| . |
| o |
| .o.=E |
+-----------------+

3.6.Liste sus identidades creadas con  ~ /. ssh.
Debería ver algo como lo siguiente:

gchacaltana@gchacaltana-ubuntu:/$ ls ~/.ssh
id_rsa id_rsa.pub

Paso 4: Crear un archivo de configuración de SSH

4.1. Usando su editor favorito, modifique el archivo ( o cree uno nuevo) : ~/.ssh/config file

4.2. Añada la siguiente entrada al archivo de configuración.

Host bitbucket.org
    IdentityFile ~/.ssh/privatekeyfile

4.3.La segunda linea tiene sangría. Esa sangría (solo es un (1) espacio) es importante, así que asegurese de incluirlo. La segunda linea es la ubicación de su llave privada. Deberia quedarle algo similar a esto:

Host bitbucket.org
    IdentityFile ~/.ssh/id_rsa

4.4. Guarde y cierre el archivo.

4.5. Reinicie el GitBash (terminal).

Paso 5. Suba la llave pública a su cuenta Bitbucket.

5.1.Con un navegador acceda a su cuenta de Bitbucket.

5.2.Seleccione de su menu:  perfil > “Manage account”.

El sistema mostrará la página Configuración de la cuenta.

5.3. Haga clic en la opción del menú “claves SSH” (SSH Keys). Se muestra una lista de todas las claves existentes. Luego, haga clic en introducir una nueva clave “Add key”.

5.4. Se le mostrará un formulario donde se le indica que ingrese un nombre (el que guste) y la llave (“Key”). Es ahí donde debe introducir su llave pública.

5.5. Para obtener su llave publica haga lo siguiente desde su terminal (GitBash):

cat ~/.ssh/id_rsa.pub

5.6.Copie el contenido de su llave pública e ingresarlo en el input (“Key”).

5.7.Luego de pegar su llave pública, haga clic en el boton “Add Key”.

5.8. Para saber que su maquina local tiene conexion ssh con bitbucket, haga lo siguiente:

gchacaltana@gchacaltana-ubuntu:/$ ssh -T git@bitbucket.org

Le debe aparecer un mensaje similar al siguiente

gchacaltana@gchacaltana-ubuntu:/$ ssh -T git@bitbucket.org
logged in as gchacaltana
You can use git or hg to connect to Bitbucket. Shell access is disabled.

Eso es todo, ahora a trabajar con sus repositorios bitbucket.

Publicado por

24 x 7 Internet User, Engineer, Web & Backend Developer, IT Project Manager, University professor, Freelancer, Programming Fanatic and Kanban lover.

  • Rodrigo Cerna

    Hola como estas! la configuración ssh también funciona para Github?

    • Hola Rodrigo que tal, efectivamente, puedes utilizar tu llave pública en GitHub.
      En las opciones de configuración de tu cuenta GitHub, le das clic en “SSH Keys” y luego en “Add SHH Key“.
      Saludos.

  • Muchisimas Gracias por el tutorial.

    Saludos!

  • Santiago Botero Madrid

    Hola Gonzalo, primero que todo muchas gracias por el tutorial.
    Segundo, quería preguntarte algo y es que al lanzar “ssh -T git@bitbucket.org” obtengo el siguiente error “shell request failed on channel 0”. sabes a que se debe?