El archivo de configuración SSH es una navaja suiza
Tags: config, ssh, sysadmin, linux
Published: 2022-02-25 15:12:51

El archivo `config` de ssh permite automatizar el modo de acceso a servidores remotos. Probablemente, accedas a un VPS por un puerto distinto, a otra instancia quieras ir directamente a un directorio distinto o cualquier otra excepción a un acceso estándar sin necesidad de escribir toda la cadena de parámetros.

Por ejemplo, imaginamos que tenemos un servidor en VirtualBox donde tenemos instalado **Apache** y **openssh-server** con:

- un puerto distinto al establecido por defecto, es decir, diferente al puerto 22,
- un usuario distinto al del sistema local. 

En él, hemos creado el usuario `administracion` y queremos acceder vía SSH de manera rápida. ¿Cuál es la opción principal? Escribir

```
$ ssh -p 2220 administrador@[IP]
```
Para, luego, teclear la contraseña y tener que acceder a la carpeta `/var/www/html`. Esto lo podemos automatizar con la configuración ofrecida en la siguiente hoja de ruta:

1. Generar el par de claves público y privada como hemos detallado en [otro tutorial](https://dev.to/daniconil/gestion-ordenada-de-claves-publica-y-privada-para-acceso-por-ssh-515o).
2. Asegurarnos de que tenemos instalado **openssh-server** en el servidor al que nos queremos conectar. Si no, simplemente teclear 
```$ sudo apt install openssh-server```
en el servidor remoto.
3. Crear un listado más de parámetros en el archivo config de nuestro equipo local ubicado en `~/.ssh/config`:
```
    # Ubuntu Server 20.04 Virtualbox
    Host ubuntuserver
    Hostname 192.168.1.150
    User administracion
    Port 2220
    RequestTTY yes
    RemoteCommand cd /var/www/html; exec $SHELL
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/privatekeys/ubuntuserver
```
Por partes:

```
Host ubuntuserver
```
 nos permite poner nombre para el acceso directo, como veremos a continuación.

```
Hostname 192.168.1.150 
```
es la IP del servidor. En nuestro caso, hemos configurado en el router que DHCP siempre ofrezca esa IP a la MAC de la tarjeta del servidor.

```
User administracion
```
 para que acceda con ese usuario. Si no, tomará el nuestro por defecto del host.

```
Port 2220
```
Por defecto, ssh intentará acceder al puerto 22. Si el puerto está modificado, hemos de añadir esta opción. En este caso, estaría configurado el 2220.

```
RequestTTY yes
RemoteCommand cd /var/www/html; exec $SHELL
``` 
para que acceda directamente a la carpeta que queremos. La orden puede ser la que quieras, por ejemplo podemos hacer que actualice los repositorios indicando `sudo apt update` en lugar de `cd /var/www/html/`
```
PreferredAuthentications publickey
IdentityFile ~/.ssh/privatekeys/ubuntuserver
``` 
para indicar que queremos que acceda por par de claves.

Una vez hecho esto, desde nuestro equipo local accederemos con

```
ssh ubuntuserver
```

al servidor remoto y directamente entraremos en

```
administracion@ubuntuserver:/var/www/html$

```

Así, accederemos de manera automática a nuestro servidor y a la carpeta en la que trabajamos normalmente, con el $USER deseado y a través del puerto habilitado.

Foto: "[Old Railroad switching device](https://www.flickr.com/photos/bg_dn/10479413433/)" by begemot_dn is licensed under [CC BY-NC 2.0](https://creativecommons.org/licenses/by-nc/2.0/deed.es).