Relación señal ruido
Atenuación
Mi tabla de comparaciones
Bienvenidas correcciones.
Bienvenidas correcciones.
Llega un momento en que introducir cada vez que queremos ingresar en nuestro servidor nuestra contraseña empieza a cansar. Esta contraseña además suele ser no muy sólida ya que es de las que debemos recordar. Y en todo caso entrar con contraseña no deja de ser más inseguro que usando claves públicas.
El servicio Ssh permite poder acceder mediante clave pública, de modo que no necesitemos escribir nuestra contraseña para ingresar en el servidor.
La idea detrás es bastante sencilla. En nuestro equipo local desde el que queremos acceder, generamos una llave pública RSA. Después la compartimos con el usuario remoto, para que la guarde añadiéndola a un archivo llamado authorized_keys. En este archivo el usuario remoto guarda todas las claves públicas con las que identifica a los usuarios remotos que quieran ingresar en su cuenta de usuario.
Veamos como hacerlo usando una terminal. En nuestro equipo local, en una terminal, ejecutamos el comando:
ssh-keygen
Este comando va a generar las llaves pública y privada. Aunque ahora solo nos interesa la pública, que estará en un archivo llamado id_rsa.pub. La aplicación nos va a pedir una passphrase, que no necesitamos, y bastará con dar retorno para no poner ninguna.
Una vez creada la llave pública debemos añadirla al almacén del usuario remoto en el cual queremos autentificarnos. Este almacén esta en un directorio oculto en su $HOME, llamado .ssh. Y dentro de él el archivo authoriezed_keys donde se añaden las llaves.
Primero vamos a subir la llave RSA pública al usuario remoto. El comando siguiente bastaría, adaptándolo a nuestro usuario y servidor:
scp ~/.ssh/id_rsa.pub usuario@servidor.com:~/id_rsa.pub
Después accedemos al usuario remoto haciendo la autentificación de la forma normal, es decir usando contraseña. El siguiente comando adaptándolo a nuestro usuario y servidor remoto nos vale:
ssh usuario@servidor.com
Creamos el directorio, que probablemente no exista con:
mkdir ~/.ssh
Y añadimos o creamos el almacén con la llave RSA pública que subimos antes y que esta en el $HOME del usuario, con:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Ahora, una vez añadida nuestra llave pública al almacén authorized_keys, podemos salir, y volver a intentar conectar. Si todo funciona correctamente la autentificación se producirá sin solicitarnos la contraseña para ingresar.
Para cada usuario local desde donde queremos conectarnos hay que repetir los pasos. Igualmente para cada usuario remoto al que queremos acceder. Una vez accedemos al usuario remoto con llave pública es buen momento para ponerle una contraseña fuerte como las que podemos generar en gpassword.com. El comando para cambiar la contraseña a un usuario es:
sudo passwd usuario.
Donde usuario lo cambiaremos por el nombre de usuario al que queremos cambiar la contraseña.
Probado en un servidor Ubuntu Server 12.04 LTS. Llave RSA pública generada en Debian 6.0.
Me he encontrado en una situación en la que mi servidor Mysql dejaba de ser utilizable, por lo que he considerado reinstalarlo. Pero me he encontrado que no bastaba con desinstalar los paquetes y volver a instalarlos para tener una instalación de nuevo operativa.
La receta que al final funcionó consiste en:
Desinstalamos todo con:
sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo rm -rf /var/lib/mysql sudo rm -rf /etc/mysql sudo apt-get autoremove && sudo apt-get autoclean
Ahora deberíamos haber limpiado los restos de la instalación anterior podemos volvemos a instalar:
sudo apt-get install mysql-server
Seguramente no nos ha pedido generar contraseña para root.
Generamos las bases de datos que mysql requiere para su funcionamiento:
sudo mysql_install_db
Y para configurar correctamente mysql, paso en el que podremos dar contraseña a root, usaremos:
sudo mysql_secure_installation
Comando que permite preconfigurar mysql para preproducción y que deberíamos usar siempre tras instalar mysql.