Rss

  • flickr
  • linkedin
  • google

Archives for : ssh

Usar Amazon EC2 como servidor git para control de versiones

Vamos a ver como usar nuestra instancia de Amazon EC2, para albergar en ella nuestro servidor de control de versiones con git. Aunque del mismo modo, lo podríamos realizar en cualquier otro servidor o incluso en un PC que usemos para dicho propósito.

 

Para los que desconozcan lo que es un sistema de control de versiones (aunque su propio nombre nos lo da a entender),  es un sistema que nos permite la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Se puede resumir como un sistema de copia de seguridad de nuestro trabajo, que realiza y almacena copias del estado del mismo durante su desarrollo para poder revertirlo, o para poder consultar cambios en cualquier momento.

 

Instalar git en nuestro equipo local

Antes de nada, si no tenemos instalado git en nuestro equipo local, procedemos haciéndolo:

sudo apt-get install git

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en equipo local

 

Configurar git en el equipo local

git config --global user.name "nombre_usuario" Sustituimos nomre_usuario por nuestro nombre de usuario que deseemos usar

git config --global user.email usuario@email.com Sustituimos usuario@email.com por nuestro correo.

git config --global core.editor "sublw" Configuramos el editor que deseemos usar por defecto, en este caso Sublime Text

 

Usar Amazon EC2 como servidor git para control de versiones, configurar git en el equipo local

 

Iniciar repositorio en equipo local

cd directorio_repositorio accederemos al repositorio que deseemos usar como repositorio local sustituyendo directorio_repositorio por la ruta correspondiente.

git init Inicializamos el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio en equipo local

 

Añadir archivos y directorios al repositorio

Vamos a crear unos archivos y carpetas de ejemplo para poder añadirlos al repositorio

mkdir js css Creamos dos carpetas

touch index.html js/main.js css/style.css Creamos tres archivos vacios

 

Usar Amazon EC2 como servidor git para control de versiones, crear archivos de ejemplo

 

git add . Añadimos todos los archivos del directorio al repositorio

git commit -m "Primer commit de prueba" Validamos los cambios en el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, añadir archivos al repositorio y realizar el primer commit

 

Crear repositorio remoto

ssh usuario@servidor Accederemos por ssh a nuestro servidor remoto, en este caso, nuestra instancia de Amazon EC2 con Ubuntu Server instalado  aquí.

sudo apt-get install git Instalaremos git en el servidor

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en el servidor

 

cd directorio_servidor_remoto Nos situaremos en el directorio que deseemos usar como repositorio remoto, podemos crear uno previamente.

 

Usar Amazon EC2 como servidor git para control de versiones, acceder al directorio remoto para usar como repositorio

 

git --bare init Iniciamos el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio remoto

 

Asociar repositorio local a uno remoto

cd directorio_repositorio En el equipo local nos volvemos a situar en el directorio en el que hemos creado el repositorio al principio

git remote add nombre_repositorio usuario@servidor:git/directorio_remoto Asociamos el repositorio local al remoto

repositorio_prueba Nombre dado al repositorio

usuario Nuestro nombre de usuario para ssh

servidor Dirección de nuestro servidor ssh para acceso ssh

nombre_repositorio Directorio remoto en el que se encuentra el repositorio

git push  nombre_repositorio master Realizamos los cambios en el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, asociar repositorio local con repositorio remoto

 

De este modo, tendremos nuestros datos a salvo de cualquier problema con nuestro equipo, además de poder trabajar varias personas en el mismo proyecto, o poder revertir el estado del mismo a cualquier versión anterior de la que se haya hecho un commit.

Es muy recomendable trabajar usando control de versiones, no solo programadores, esto es extensible casi todo tipo de proyectos, y aunque al principio pueda resultar un poco lioso, pronto se le coge el truco y el hábito.

 

Aquí tenéis una chuleta de comandos útiles para usar con git.

 

Comprobar conexiones ssh e intentos de conexión en linux

Muy a mi pesar, en la actualidad se realizan multitud de intentos de romper nuestras contraseñas de ssh, por lo que es muy útil poder controlar si alguien a conseguido acceder a nuestra máquina. Esto es muy sencillo, con este simple comando:

cat /var/log/auth* | grep Accepted

se nos mostrarán por pantalla las conexiones vía ssh que se han establecido con nuestro equipo, mostrándonos información útil como el usuario que ha accedido, la dirección IP desde la que ha accedido y la fecha y hora. Este es un ejemplo de salida que genera este archivo en uno de mis equipos:

ssh conexiones establecidas

En esta imagen se pueden ver 2 accesos autorizados del 29 de septiembre, por ejemplo el primero fue realizado a las 01:41:53 por el usuario david desde la IP 192.168.100.3 (en este caso es una IP local, pero si se hubiese accedido desde el exterior, nos aparecería la IP pública) usando el puerto 46599.

 

Si deseamos ver todos los intentos  de conexión podemos usar:

cat /var/log/auth* | grep ssh

Con lo que obtendríamos una salida similar a esta:

ssh intentos conexión

En donde vemos que el usuario con la IP 89.208.44.107 lleva ya un rato intentando acceder a mi equipo con distintos nombres de usuario, sin acertar por el momento con ninguno.

Este tipo de ataque de fuerza bruta, en los que intentan acceder a nuestros equipos a base de intentarlo, se pueden resolver de muchas maneras como bloqueando IPs, poniendo un máximo número de intentos tras los cuales pasan a una black list, etc. Sin embargo si tenemos una contraseña lo suficientemente fuerte, o si usamos utenticación mediante par de claves publica – privada únicamente, no nos deben de preocpar en exceso, salvo que nos cause problemas de congestión en la red por ser excesivo el número de intentos simultáneos.