En este artículo aprenderás algunos ajustes que puedes realizar en tu cliente SSH.
Definiendo la información de conexión a un servidor
En tu computadora local, puedes definir algunas configuraciones individuales o para todos los servidores que deseas conectarte. Estas configuraciones deben ser almacenadas en el archivo “~/.ssh/config”, el cual es leído por el cliente SSH cada vez que es ejecutado.
Primeramente, crea o edita el archivo anterior en tu PC:
1 |
$ nano ~/.ssh/config |
Dentro, puedes definir configuraciones específicas mediante la directiva Host, seguido de un alias. Para más información puedes consultar el manual de ssh_config:
1 |
$ man ssh_config |
Un ejemplo típico puede ser:
1 2 3 4 |
Host servidor1 HostName serv.midominio.com Port 2442 User usuario1 |
La configuración anterior te permite conectarte al servidor serv.midominio.com, mediante el usuario usuario1 y al puerto 2442, simplemente escribiendo:
1 |
$ ssh servidor1 |
Puedes emplear además wildcards para aplicar las configuraciones a todos los servidores que deseas conectarte. Debes tener presente que las definiciones de hosts se aplican de arriba hacia abajo, por lo que las definiciones de más abajo pueden sobrescribir a las primeras. Por ejemplo, puedes denegar el acceso de reenvío de X para todas las conexiones que hagas y permitirlo para un host específico:
1 2 3 4 5 6 |
Host * ForwardX11 no Host s2.midominio.com HostName s2.midominio.com ForwardX11 yes |
Evitando el tiempo de inactividad (Timeout) en las conexiones SSH
Seguramente has notado que, en ocasiones, después de un tiempo sin actividad, la sesión SSH se congela o se desconecta. Esto se debe a que muchos ISP cierran las conexiones SSH por inactividad. Puedes configurar tu cliente SSH para que envíe un paquete al servidor cada cierto tiempo con el objetivo de evitar esto. Solo necesitas editar el archivo de configuración de tu cliente SSH de la siguiente forma:
1 |
$ nano ~/.ssh/config |
Luego, debes especificar para todos los hosts la directiva “ServerAliveInterval 120”. Con esto logras que cada dos minutos se envíe un paquete al servidor remoto:
1 2 |
Host * ServerAliveInterval 120 |
Desactivando el Chequeo de Host
Por defecto, cada vez que estableces una conexión a un servidor, puedes ver el fingerprint de la llave de ese servidor remoto.
1 2 3 |
The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes |
Esto permite verificar la autenticidad del servidor remoto y te permite conocer si hay un usuario malicioso que está suplantando la identidad de tu servidor remoto. En ocasiones te puede resultar útil desactivar esto, pero debes tener en cuenta que puede ser un riesgo grande de seguridad.
Para desactivar el chequeo de hosts, edita el archivo de configuración del cliente SSH: “~/.ssh/config” y ajusta la configuración como se muestra a continuación¨:
1 2 3 |
Host * StrictHostKeyChecking no UserKnownHostsFile /dev/null |
Al definir “StrictHostKeyChecking no”, los nuevos hosts serán agregados “know_hosts” sin preguntar. Mientras que “UserKnownHostsFile /dev/null” no muestra alertas cada vez que un nuevo host es agregado o cambiado.
Para activar el comportamiento por defecto, basta con definir “StrictHostKeyChecking ask” en la entrada del host deseado:
1 2 3 4 |
Host s3.midominio.com s3.midominio.com StrictHostKeyChecking ask UserKnownHostsFile ~/.ssh/known_hosts |
Multiplexando SSH sobre una sola conexión TCP
Existen situaciones donde establecer una nueva conexión TCP puede tomar más tiempo del deseado. Si estás estableciendo múltiples conexiones al mismo servidor, puedes hacer uso del multiplexado. El multiplexado de SSH reúsa la misma conexión TCP para múltiples sesiones SSH. Esto elimina algo del trabajo necesario para establecer una nueva sesión, posiblemente acelerando las cosas un poco.
Para establecer el multiplexado, puedes de forma manual configurar las conexiones o puedes configurar tu cliente para que automáticamente use el multiplexado cuando esté disponible. Para la configuración de la segunda opción usa esto:
1 2 3 4 5 |
$ nano ~/.ssh/config Host * ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1 |
La directiva “ControlMaster” debe establecerse a “auto” para activar el multiplexado siempre y cuando sea posible. La directiva “ControlPath” establecerá el camino del socket de control. La primera sesión establecida creará dicho socket y las sesiones subsecuentes serán capaces de encontrarlo, ya que está etiquetado por nombre de usuario, host y puerto.
Al establecer la directiva “ControlPersist” a “1” permitirá que la conexión inicial esté en segundo plano. El número 1, indica que la conexión TCP debe terminar automáticamente un segundo después de que la conexión SSH sea cerrada.
Finalmente debes crear el directorio especificado en la directiva “ControlPath”:
1 |
$ mkdir ~/.ssh/multiplex |
Si por alguna razón necesitar evitar la configuración de multiplexado temporalmente, puedes hacerlo de esta manera:
1 |
$ ssh -S none usuario@servidor_remoto |