En producción laravel a vps y configurando dominio, sub dominios SSL Parte2. Conexión de usuario por ssh desactivar usuario root
Tags: deploy, ssh, domain, subdomain
Published: 2019-12-08 18:16:20

[Anterior parte 1]
Si vamos al panel de digital ocean creado anteriormente podremos ver la dirección ip del droples, ahora en nuestra terminal ocupamos el usuario root que nos provee digital ocean con la dirección ip y la llave generada anteriormente de la siguiente manera.
```zsh
ssh root@157.245.169.85 -i /home/alfredo/.ssh/laravelapp
```
Nos acceder al servidor remoto esto nos permite confirmar damos `yes` Ten en cuenta que ocupamos la llave que no tiene `.put` porque este es la llave privada que no debemos compartir. Ahora por razones de seguridad no se recomienda trabajar directamente con el usuario `root` por lo que crearemos un usuario, lo llamare miusuarioenubuntu
```zsh
adduser miusuarioenubuntu
```
Este usuario se creó en el directorio `/home` para verlo `ll /home/` (`deluser` y nombreusuario para eliminar dicho usuario) este usuario no tiene permisos vamos a darle permiso de **sudo** de modo que podamos ejecutar comandos de **root** anteponiendo **sudo** 
```zsh
adduser miusuarioenubuntu sudo
```

Para acceder con el nuevo usuario que creamos necesitamos generar llave **ssh** en nuestra maquina local generamos con `ssh-keygen` que lo voy a guardar en **(/home/alfredo/.ssh/id_rsa)**: `/home/alfredo/.ssh/blogaf` una vez generado mostramos la llave `cat ~/.ssh/blogaf.pub` para despues copiar y pegar en nuestro servidor remoto a la que entramos como root y navegamos al directorio del usuario al que vamos a permitir acceder con **ssh** en este caso `cd /home/miusuarioenubuntu` ahí creamos una carpeta oculta `mkdir .ssh` dentro creamos un archivo `touch authorized_keys` en la que pegamos la **llave publica** guardamos y salimos del servidor remoto y intentamos iniciar sesion con dicho usuario 
```
ssh miusuarioenubuntu@157.245.169.85 -i /home/alfredo/.ssh/blogaf
```
ahora podemos  acceder con el usuario **miusuarioenubuntu** y **root** sin embargo es recomendable desactivar el usuario **root** por temas de seguridad, para esto entramos al servidor, si entraste con el usuario normal es necesario anteponer **sudo** `sudo nano /etc/ssh/sshd_config` en el archivo cambiamos la linea que dice `PermitRootLogin yes` ponemos a `PermitRootLogin no` despues de esto guardamos y recargamos el servicio para que surtan efectos de configuración de la siguiente manera `sudo systemctl reload ssh.service` y salimos del servidor, si intentamos conectarnos como **root** ya no nos debería permitir.

Adicional a esto tenemos dos inconvenientes 
1. El servidor se cierra cada 5 minutos cuando no hacemos ningún movimiento esto pasa casi en todos los proveedores del servicio 
2. Es un poco molesto cada que queremos acceder al servidor y poner el usuario la ip y cargar la llave 
Para esto navegamos en nuestra maquina local al directorio `cd ~/.ssh` donde creamos nuestra **llave ssh** dentro creamos un archivo con el nombre **config** `nano config` en el que escribimos el siguiente código 
```
ServerAliveInterval 120

ServerAliveCountMax 3

Host carlos

     HostName 157.245.169.85

     User miusuarioenubuntu

     IdentityFile /home/alfredo/.ssh/blogaf
```
Guardamos y Salimos con esto las dos primeras lineas solucionan el primer problema y el resto el segundo. Ahora podríamos acceder de la siguiente manera `ssh carlos` donde **Host** hace referencia al nombre que sera ocupado para acceder al servidor, **HostName** a la dirección ip del servidor **User**  al usuario que creamos dentro del servidor y **IdentifyFile** a la ubicación de la llave.

# Configurando dominio y subdominio

Vamos al panel de digital ocean navegamos a la parte Networking ahi añadimos el dominio de la siguiente manera
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/n6p9a1onmc7pdbzgdg1c.png)

Esto nos genera tres DNS con el dominio añadido
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/zzk89cerhswrogff6h3r.png)

Ahora añadimos @ en HOSTNAME para indicar el dominio añadido y seleccionamos un servidor y TTL como se muestra
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/orgzh46yxzu3d3km62bl.png)

Con esto el dominio esta listo de aqui en adelante el servidor se encargara de procecar las peticiones, como ultimo paso vamos añadir 3 subdominios de la siguiente manera
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/h95a8r3mlr8anr9i89r4.png)
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/tws071nmsmhn9hyrc9ee.png)

Ten encuenta que el dominio principal en mi caso (alfredofernandez.me) lo tienes que tener registrado, pero el subdominio puedes poner cualquier nombre no es necesario el registro, una vez el registro es necesario apuntar a los dns de digital ocean, eso podemos ver en la parte inferior las que dice NS
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/o55mz8bramd47u575dkh.png)

 Esos tres NS añadimos en nuestro proveedor de dominio en mi caso lo registré en namecheap, si registraste en otro proveedor de igual manera deberias tener la sesion para añadir dns, para hacerlo nos dirigimos a la parte domain en la sesión DNS seleccionamos Custom DNS y añadir los NAMESERVER como se muestra 
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/46tonsrq1pgcxxzwgjyk.png)
 


[Anterior parte 1]: https://dev.to/afreddier/en-produccion-laravel-a-vps-y-configurando-dominio-sub-dominios-certificados-ssl-parte1-creando-droplets-en-digital-ocean-563m