Probando un VPS desde cero (1) – acceso servidor

Hoy voy a empezar a trastear con un servidor y a montarlo desde cero. Mi idea es hacerlo primero con Docker (me ahorro instalación de binarios, dependencias y detalles que seguramente se me escaparán) y más adelante, cuando tenga más claras las cosas básicas, intentar hacer lo mismo sin Docker.

Intentaré plasmar lo que hago aquí a modo de diario y forma de terminar de entender y fijar lo que hago, así como para futuras referencias para mi mismo.

Entrando al servidor

Es un Ubuntu 22.04, he ido a lo fácil según recomendaciones que he leído… Ubuntu es lo más sencillo y como además uso Ubutnu de escritorio, imagino que lo veré más familiar todo.

Qué quiero ver hoy: Hoy solo quiero ver maneras de entrar más fácilmente al servidor y enterarme de ficheros básicos de configuración del mismo a nivel de acceso.

¿Cómo entro al servidor por ssh?

Me dan una IP, un usuario (root) y una clave. Con el comando siguiente me logeo:

ssh username@remote_host

Pero no quiero estar poniendo mi clave cada vez, ni teniendo que recordar la ip para logearme. Para ello seguimos estos pasos.

1: Generar la key pública y privada

¿Cómo lo hago? En nuestra consola ejecutamos:

ssh-keygen

Nos preguntará dónde queremos guardar el par de claves privada/pública, que por defecto es en ~/.ssh y se llaman por defecto: la privada id_rsa y la pública id_rsa.pub

También preguntará por una contraseña, que de momento pasamos.

La clave privada debe permanecer siempre en el cliente (mi ordenador).

La clave pública puede ser compartida sin problemas, y debe ser subida al servidor en cuestión en ~/.ssh/authorized_keys para poder autenticarnos (mediante el uso de nuestra clave privada).

La clave pública se usa para encriptar mensajes que solo la clave privada puede desencriptar.

2: Copiar la clave pública al servidor

* IMPORTANTÍSIMO: la clave privada permanecerá siempre en el cliente (nuestro ordenador) *

Método fácil:

ssh-copy-id username@remote_host

(username y remote_host son el usuario y la ip/dominio de nuestro servidor, normalmente en este punto el usuario será root)

Esto copiará el contenido de ~/.ssh/id_rsa.pub por defecto (si hemos usado otro nombre, hay que especificarlo en el comando), en el servidor en el fichero ~/.ssh/authorized_keys

Método manual (el comando ssh-copy-id hace esto realmente):

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Esto hará lo mismo: cat leerá id_rsa.pub, el output lo pasamos a ssh donde nos logeamos con nuestras credenciales y a ssh le pasamos un comando a ejecutar, el mkdir para crear el directorio .ssh y la combinación de cat y >> insertamos nuevo contenido en el fichero (el contenido de id_rsa.pub).

O también podemos una vez logeados en el servidor y con la clave pública copiada en el portapapeles:

echo clave_publica >> ~/.ssh/authorized_keys

3: Probar que funciona

Simplemente ejecutando

ssh username@remote_host

Deberíamos logearnos, sin pedir contraseña. Esto es que ha funcionado.

4: Deshabilitar el inicio de sesión por contraseña

Tenemos que editar el archivo /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

Buscamos PasswordAuthentication y lo setamos a no, quedando la línea así:

PasswordAuthentication no

Normalmente habrá que reiniciar el servicio de ssh

sudo systemctl restart ssh

5: Guardar esta conexión para logearme más fácilmente

Editamos en nuestro ordenador, el fichero ~/.ssh/config/ de la siguiente forma

Host nombreserver
    User username
    HostName ipserver
    IdentityFile ~/.ssh/id_rsa
    Port 22
  • Host contendrá el «alias» que usemos para esta conexión
  • IdentityFile podemos obviarlo si hemos usado el nombre por defecto para la clave pública
  • Port podemos obviarlo si usamos el 22 que es el puerto por defecto

Las siguientes conexiones a este servdor serán con

ssh nombreserver

No pedirá contraseña, no habrá que acordarse de la IP ni del user

¿Y ahora qué?

Ahora toca instalar nginx… o mejor dicho antes instalar Docker y luego nginx, y configurarlo claro.