Manejando varias claves con SSH

Publicado en Linux, Recursos el 20 de April, 2010 por Fran. (4 comentarios)

La mejor funcionalidad de SSH es poder usar pares de claves (pública/privada) para autenticarse en una máquina sin necesidad de introducir una contraseña. El problema radica cuando necesitas usar varios pares de claves, por ejemplo: para acceder diferentes máquinas sin compartir un mismo par de claves. Pero como con todo, siempre hay una solución para poder usar varios pares de claves distintos.

Partiendo de que se han generado dos pares de claves:

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.work -C "fran@trabajo"
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.home -C "fran@casa"

La forma sencilla es crear el archivo «~/.ssh/config», añadiéndole las siguientes líneas:

IdentityFile ~/.ssh/id_rsa.work
IdentityFile ~/.ssh/id_rsa.home

De este modo, cada vez que SSH conecte con una máquina intentará usar alguna de esas dos claves. Sin embargo, SSH permite realizar un control más granular sobre las claves, para ello habría que tener un archivo «~/.ssh/config» similar al siguiente:

Host 192.168.0.100
  IdentityFile ~/.ssh/id_dsa.home
  User franchukelly

Host ssh.trabajo.com
  IdentityFile ~/.ssh/id_rsa.work
  User fran
  Port 2211

Dónde cada campo Host permite definir una pequeña configuración que se usará de forma predeterminada cuando se realice una conexión a la dirección indicada. Por ejemplo:

$ ssh ssh.trabajo.com

SSH usaría la clave «id_rsa.work», junto al usuario «fran» y el puerto 2211.

Basado en Multiple ssh private keys.

Convertir repositorio de subversion a uno de Git

Publicado en Git, Linux, Script, Subversion el 6 de April, 2010 por Fran. (5 comentarios)

Hace unos días tuve que convertir un repositorio de subversion a un repositorio de Git. Después de buscar un poco por Google, encontré la manera de hacerlo en una web del wiki de Debian sobre cómo configurar Git en su web de proyectos Alioth.

Antes de nada, hay que crear un archivo con los nombres de los desarrolladores que han usado el repositorio de subversion, el archivo tendrá el siguiente formato:

pepe = Pepe Garcia <pepe@garcia.es>
juan = Juan Gonzalez <juan@gonzalez.es>

Los nombres de los desarrolladores del repositorio de subversion se pueden conseguir ejecutando:

$ svn log "svn://REPOSITORIO-SVN/" | awk -F'|' '/^r[0-9]+/ { print $2 }' | sort -u

Este archivo se debe guardar como «authors.txt» para que mi script lo localice, aunque no sería muy difícil cambiar mi script para que se le pase la ruta como pará.

Mi script «svn2git.sh»

Este script se descarga el repositorio indicado (usando git-svn) y convierte y/o borra todos los datos relativos a subversion, como las ramas, los tags, …

#!/bin/sh
# Converts a subversion repository to a Git one.
# git-svn must be installed.

if [ $# -lt 2 ]; then
   echo "Usage: $0 SVN-REPOSITORY LOCAL-PATH"
   exit 1
fi

git svn clone $1 --stdlayout --authors-file=authors.txt --no-metadata $2

cd $2 > /dev/null

for t in `git branch -r | grep 'tags/' | sed s_tags/__`; do
    git tag $t tags/$t^
    git branch -d -r tags/$t
done

git branch -d -r trunk
git config --remove-section svn-remote.svn

rm -fr .git/svn .git/{logs/,}refs/remotes/tags/

cd - > /dev/null

exit 0

Configurar un servidor de Git

Publicado en Git, Linux el 5 de April, 2010 por Fran. (6 comentarios)

Para todos aquellos que tengan que configurar un servidor de repositorios de Git y lo quieran hacer a mano, como me pasó a mí hace unos días, aquí tienen un pequeño manual:

  1. Instalar git:
    # apt-get install git-core
  2. Crear la estructura de los directorios dónde se almacenarán los repositorios de Git:
    # install -d -m 0755 /srv/algo/git /srv/algo/git/repos /srv/algo/git/.ssh
  3. Crear el usuario de Git (llamado git):
    # adduser --system --home /srv/algo/git --no-create-home \
    --shell /usr/bin/git-shell --gecos 'git version control' --group \
    --disabled-password git
  4. Crear un repositorio:
    $ cd /srv/algo/git/repos
    # install -d -o git -g git -m 0700 PROYECTO.git
    # sudo -H -u git env GIT_DIR=PROYECTO.git git --bare init
  5. Añadir una clave pública de SSH para poder acceder al repositorio:
    $ cd /srv/algo/git/.ssh
    # cat CLAVE >> authorized_keys
  6. Para clonar el repositorio hará falta tener la clave privada de la clave pública usada, y ejecutar:
    $ git clone git@SERVIDOR:repos/PROYECTO.git

Basado en Howto host git on your Linux box.

Autotools

Publicado en C/C++, Linux el 13 de November, 2009 por Fran. (Comments Off)

Si alguien sabe lo que son las autotools, seguramente haya sufrido para saber cómo funcionan. Hacía mucho tiempo que no me peleaba con ellas, hasta que hace unos días leí un pequeño manual sobre cómo configurar los diferentes archivos necesarios y me acordé de un pequeño manual que hice cuando me tocó pegarme con ellas, que voy a recuperar.

¿Qué son las autotools?

Las autotools, son programas que se usan para crear un paquete de código fuente que se pueda distribuir y compilar de una manera sencilla (configure, make y make install). Los programas que forman las autotools son los siguientes:

  • aclocal
  • autoconf
  • automake

Estos programas son la base para crear el paquete de código fuente, para ello se tendrán que generar unos archivos concretos.

Estructura del código fuente a distribuir

Las autotools se usan para generar el paquete «tar.gz» que contiene el código fuente del programa que se va a distribuir, normalmente estos paquetes siguen una estructura estándar. La estructura básica es:

  • src: Directorio del código fuente.
  • AUTHORS: Indica los autores del programa.
  • ChangeLog: Indica los cambios que se han ido produciendo.
  • COPYING: Indica la licencia de distribución que tiene el programa. (Autogenerado)
  • INSTALL: Explica cómo instalar el programa. (Autogenerado)
  • NEWS: Indica las noticias relacionadas con el programa.
  • README: Un pequeño documento en el que se describe el programa y se explican temas concretos de éste.
  • THANKS: Indica los agradecimientos que tenga el autor/es.
  • TODO: Indica una pequeña lista de cosas por hacer.

De este modo, si se van a utilizar las autotools sería aconsejable seguir la estructura anterior, y crear todos los archivos menos los como «autogenerado» que, obviamente, se generarán automáticamente, aunque siempre se pueden crear a mano ya que puede que no se quiera tener el contenido autogenerado.

Leer el resto »

Truco para que APT no instale paquetes recomendados

Publicado en Debian, Recursos el 12 de October, 2009 por Fran. (Sin comentarios)

Pongo aquí un pequeño truco (más que un truco es un archivo de configuración) para que APT no instale los paquetes recomendados por otro, suele pasar que hay paquetes que recomiendan instalar servidores de correo y, obviamente, no quiero tener un servidor de correo en muchos de mis ordenadores.

# echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/90recommends

Sacado de Checklist for configuring a Debian system.