notifications Notificaciones

Marcar todas como leídas

Ver más

957 veces ha sido leído este artículo

Autenticación con servidores remotos

Lo lees en 4 Min.

En este post aprenderemos a trabajar con servidores remoto (máquina remota) a través del protocolo SSH.

Los comandos que aquí veremos son válidos para todos los sistemas operativos basados en unix; ubuntu, fedora, red hat, mac OS etc... No importa su versión, ni su arquitectura.

Así que no te preocupes, podrás trabajar con un servidor ubuntu 16.04 a través de tu Mac OS El capitan.

SSH.

Si eres completamente nuevo en esto de los servidores, quizás te estes preguntando ¿Qué es SSH?. Bueno, deja te explico.

SSH, por sus siglas al español secure shell, es un protocolo el cual nos permite acceder a equipos remotos, no solo acceder, también tomar control total sobre ello. Todo esto a través de un programa con el mismo nombre SSH y a través del puerto 22.

Para este post será indispensable usarlo, también será necesario que cuentes con conocimientos básicos de unix.

Conexión a un equipo remoto.

Para que nosotros podamos realizar una conexión a un equipo remoto debemos de conocer tres cosas:

  • La dirección IP del equipo al que queremos acceder.
  • El nombre de usuario con el que nos autenticamos.
  • La contraseña del usuario.

Si nosotros conocemos toda esta información podemos autenticarnos remotamente. Debemos de abrir una nueva pestaña en nuestra terminal y ejecutar el siguiente comando.

> ssh [email protected]_ip

En mi caso, quedaría de la siguiente manera. Utilizó el usuario root.

> ssh [email protected]

Basta con ejecutar y completar el proceso de autenticación.

Aceptamos la advertencia y colocamos nuestra contraseña.

Si es la primera vez que se inicia sesión en el servidor, es probable que nos pida cambiar la contraseña.

Una vez nos hayamos autenticado, tendremos control total sobre el equipo, podemos ejecutar cualquier comando que necesitemos.

Si queremos salir y regresar nuevamente a nuestro equipo local, únicamente necesitamos ejecutar exit.

Conexión a un equipo remoto mediante llaves.

Bien, ya podemos autenticarnos con el servidor, basta con colocar, el usuario, la ip y la contraseña; Valores que debemos de tener siempre en cuenta y por su puesto, almacenados en algún lugar seguro.

De estos tres datos, el más sensible es la contraseña. Colocar la contraseña siempre que necesitamos autenticarnos no suena una muy buena idea.

Lo que haremos ahora para mejorar el proceso de autenticación y hacerlo más seguro, es utilizar una llave pública, la cual nos permita autenticarnos con el servidor sin la necesidad de colocar una contraseña.

Todos los siguientes comando los ejecutaremos en nuestro equipo local.

Abrimos una nueva pestaña y ejecutamos el siguiente comando.

> cat ~/.ssh/id_rsa.pub

Si obtenemos alguna cadena de caracteres alfanumérica, eso quiere decir que en nuestro equipo ya cuenta con la llave pública.

En caso obtengamos el mensaje No such file or directory no nos preocupemos, únicamente necesitamos generar un par de llaves (una pública y una privada).

Para todos aquellos que NO cuenten con la llave pública debemos de ejecutar el siguiente comando.

> ssh-keygen -t rsa -b 4096

Debemos de completar el proceso de creación, aceptamos la dirección por default donde se guardarán las llave y colocamos alguna contraseña a nuestras llaves.

Aquí un tutorial que nos explica paso a paso la creación de la llave pública.

Una vez tengamos nuestra llave pública el siguiente paso es indicarle al servidor que nos autenticaremos mediante esta llave y no usaremos más la contraseña, para ello utilizaremos el programa ssh-copy-id. Ejecutamos el siguiente comando.

> ssh-copy-id [email protected]_ip

Es probable que dicho programa no se encuentre instalado en nuestro equipo, si este es el caso, no nos preocupemos, le proceso de instalación es bastante sencillo, puedes apoyarte del siguiente link para ello.

Una vez nuestra llave pública se encuentre en el servidor ya podemos autenticarnos sin la necesidad de colocar nuestra contraseña.

> ssh [email protected]_ip

Conexión únicamente mediante llaves públicas.

Si NO estamos utilizando el usuario root para autenticarnos, yo recomiendo indicarle al servidor que únicamente acepte conexiones con llaves públicas, esto para evitar ataques de fuerza bruta.

En caso te encuentres usando el usuario root, te recomiendo crees un nuevo usuario con permisos de administrador.

Una vez autenticados en el servidor ejecutaremos el siguiente comando.

> sudo nano /etc/ssh/sshd_config

Buscamos la línea PasswordAuthentication, eliminamos el comentario (#) y reemplazamos yespor no

Quedaría de la siguiente manera.

PasswordAuthentication no

Guardamos los cambios. Ahora necesitamos reiniciar el servicio ssh.

> sudo service ssh restart

Sin salir del servidor abrimos una nueva pestaña y nos volvemos a autenticar.

> ssh [email protected]_ip

Si es posible autenticarnos, daremos como exitosa la configuración realizada. Ya podemos salir del servidor sin preocupaciones

Esto aumenta la seguridad, sin embargo, si la llave pública por alguna razón se pierde, el acceso al servidor será imposible, por esa razón recomiendo tener en un lugar seguro la llave pública y solo implementar esta opción en el usuario root si es estrictamente necesario.

Conexión a múltiples equipos.

Ya nos olvidamos de la contraseña, sin embargo, aún nos queda recordar el usuario y la dirección ip del servidor. Si trabajamos únicamente con un servidor es probable que no tengamos problemas para recordarlo, sin embargo, qué pasa si trabajamos con 10, 20, 50 o más equipos. En estos casos esos dos pequeños datos pueden ser un dolor de cabeza. Afortunadamente podemos autenticarnos a los servidores mediante un alías, algo mucho más fácil de recordar.

lo primero que debemos de hacer en editar el archivo config que se encuentra dentro de /.ssh (Si esl archivo no se encuentra debemos de generarlo).

> nano config

Dentro del archivo colocamos lo siguiente:

Host nuestro_alias
Hostname direccion_ip
User usuario
PubKeyAuthentication yes
IdentityFile ~/.ssh/id_rsa

El valor para el Host será el alías que queremos utilizar.

Nosotros podemos agregar la n cantidad de equipos que necesitemos, basta con seguir la estructura mencionada.

Guardamos cambios y ahora nos autenticamos vía SSH.

ssh nuestro_alias

Listo! sin usuarios, dirección ip y sin contraseña podemos autenticarnos a servidores remotos de una forma flexible y sobre todo segura.

Recomendaciones

Elixir el lenguaje de programación

Lo lees en 7 Min.

Elixir el nuevo lenguaje de programación. Quizás hayas oído hablar acerca de Elixir sin que te q...

 

Emojis en tu aplicación. Deja de utilizar utf8 con MySQL.

Lo lees en 4 Min.

¿Alguna vez has pensado en almacenar emojis en tu Base de datos?, Si, emojis, de tal forma que tu...

 

Pipes en Linux

Lo lees en 4 Min.

Pipes en linux Si eres usuario Linux/Unix es probablemente hayas oído hablar acerca de los pipes...

 

Cómo tener una página web

Lo lees en 7 Min.

Tener una página web se ha convertido en un requisito indispensable para toda clase de negocios, ...