Te ofrecemos una breve guía para dar los primeros pasos con SSH, el protocolo que sirve para conectarnos con los servidores por línea de comandos. Te servirán cuando utilizas un servidor para un hosting WordPress o cualquier otro tipo de aplicación. Veremos algunas prácticas comunes como la conexión por medio de llaves SSH e introducimos algunos comandos básicos del terminal para que sepas qué hacer una vez conectado con tu servidor.
Qué es SSH
SSH es un protocolo de comunicación que tiene una característica fundamental, que consiste en su seguridad, ya que, por definición, todas las comunicaciones en SSH se realizan de manera encriptada.
Con SSH conseguimos realizar conexiones remotas con servidores y nos sirve para toda la gama de servidores. Al realizar SSH nos conectaremos con los servidores por medio de terminal, pudiendo una vez dentro ejecutar comandos como si estuviéramos delante del propio servidor. Este es el medio mediante el cual podemos administrar los servidores bajo el sistema operativo Linux.
Software para la realización de SSH
Para poder conectarnos por SSH contra un servidor necesitamos un programa de terminal, mediante el cual ejecutar comandos. Generalmente todos los sistemas operativos vienen con un programa de terminal instalado de casa, sin embargo en el caso de Windows hay algunos matices y alternativas que queremos comentar.
El programa de terminal que tienen instalado de inicio los usuarios de MacOS o de cualquier distribución de Linux es estupendo, ya que funcionan bajo un estándar idéntico o similar al que funcionan los servidores. Por su parte, Windows tiene unos terminales un poco particulares, que no siempre permiten las mismas cosas que se pueden hacer en la línea de comandos de Linux, ya sea el antiguo cmd de Windows o el nuevo Power Shell.
Es por ello que, para Windows, recomendamos hacernos con un software de terminal mejorado. Existen multitud de alternativas que puedes usar. Te damos algunas de ellas como sugerencia y podrás usar la que tú prefieras.
- Cmder: un software gratuito y portable para contar con un terminal del estilo de Bash en Windows.
- Git Bash: es el software de terminal que se instala en Windows al instalar Git con el instalador oficial.
- Hyper: Software multiplataforma para terminal basado en tecnologías Javascript.
Existen muchas otras alternativas que pueden ser recomendables para Windows, pero estas son las más destacadas. También deberíamos mencionar a Putty pero actualmente no lo recomendamos porque se ha quedado anticuado y sigue aportando una experiencia de uso que no es exactamente la misma que tendríamos en Linux o MacOS.
Otra alternativa que nos gusta mucho es instalar WSL (Windows Subsystem Linux) que, combinado con con Windows Terminal, nos permite tener un terminal basado en Ubuntu y otras distribuciones. Esto lo consigue por medio de virtualización y, gracias a ello, podemos trabajar en Windows tal como si estuviéramos en Linux. Esta última alternativa es un poco más avanzada y quizás en este momento no sea necesaria para ti, pero si algún día decides trabajar con Docker en Windows la necesitarás.
Datos para la conexión por SSH
Una vez tenemos un software de terminal adecuado podemos realizar la conexión por SSH contra el servidor. Para ello, necesitamos unos datos que vamos a explicar a continuación.
- IP del servidor: la dirección IP asignada al servidor con el que nos queremos conectar
- Usuario: El nombre de usuario con el que tenemos que autenticarnos. Ese usuario puede ser «root» en muchos casos, lo que significa que nos conectamos como superusuarios. Pero podría ser otro nombre de usuario también, en cuyo caso tendríamos menos permisos, pero muchas veces es posible ejecutar los comandos con «sudo» delante para alcanzar el mismo nivel
- Clave: Por supuesto para la autenticación necesitaremos un password con el que validar el usuario
Opcionalmente, podríamos necesitar lo que se denomina una llave SSH. Enseguida hablaremos de ellas también. Estos datos de conexión SSH te los informaremos a partir del panel de control de tu servidor.
Comando de conexión SSH
Ahora veamos el comando de conexión con nuestro servidor. El comando en sí es «ssh» y en él tenemos que indicar una serie de valores:
ssh usuario@ip_del_servidor
Si el usuario fuese «root» y la IP del servidor fuese 1.2.3.4 el comando quedaría de esta manera:
ssh root@1.2.3.4
Una vez lanzado ese comando nos solicitará la clave del usuario, que tendremos que introducir en el terminal, pulsando Enter después.
Llaves SSH
En ocasiones, los servidores se pueden configurar para el acceso mediante una llave SSH. En esos casos, en lugar de proporcionar una clave de acceso del usuario, se autenticará por medio de la llave.
La llave SSH no es más que un fichero de texto con un código muy largo de caracteres indescifrables. Para trabajar con llaves SSH en realidad tendremos dos ficheros uno público y otro privado. La llave pública se encuentra en el servidor, localizada en una carpeta del sistema. La llave privada la tenemos en nuestro ordenador local y es la que usamos para autenticarnos contra el servidor.
Para conectarnos al servidor por SSH usando una llave privada tenemos que escribir un comando como el descrito anteriormente. Sin embargo ahora añadimos un flag «-i» y a continuación la ruta donde se encuentra esa llave privada.
ssh -i ~/.ssh/mi_llave_privada root@1.10.20.30
La llave en ocasiones puede requerir la introducción de una clave para desbloquearla. Esto depende de cómo haya sido creada.
Comandos básicos para trabajo con el servidor
A continuación vamos a ver una lista de comandos básicos con los que podremos hacer cosas una vez conectados al servidor.
Comando ls
El comando ls sirve para hacer un listado de archivos y carpetas que hay en el directorio actual.
ls
Si aplicamos el flag -l podemos encontrar un listado ampliado de los archivos y carpetas.
ls -l
Comando mkdir
Este comando nos permite crear directorios en el sistema de archivos. Simplemente le indicamos el nombre del directorio que queremos crear.
mkdir carpeta2
Esto creará el directorio «carpeta2» que colgará de la ruta actual, donde estamos situados con la línea de comandos.
Comando cd
El comando cd nos sirve para movernos a una carpeta distinta del sistema de archivos del servidor.
cd carpeta
Ese comando nos llevaría al directorio «carpeta» que se encuentra colgando del directorio actual. Podemos dar una ruta más profunda, incluso absoluta a la raíz del sistema de archivos.
cd /var/www/
Comando cp
El comando cp sirve para realizar copia de archivos, indicando el archivo origen y dónde se colocará la copia.
cp archivo.txt copia.txt
Ese comando copiaría el contenido de archivo.txt y lo dejaría en copia.txt. Por supuesto, las rutas pueden ser más profundas y hacerse absolutas desde la raíz del sistema de archivos, igual que ocurría con el comando cd.
Comando mv
Este comando sirve para mover la localización de un archivo a otra carpeta del sistema de archivos. También podemos usar el comando mv simplemente para renombrar.
mv archivo.txt archivo2.txt
Este comando renombraría el archivo.txt y pasaría a llamarse archivo2.txt, situado en la misma carpeta.
mv archivo.html /var/www/example.com/public
En este caso hemos movido el archivo.html que estaba en la carpeta actual y lo hemos dejado en la ruta /var/www/example.com/public/archivo.html
Comando rm
Sirve para borrar archivos del directorio actual, o archivos de la ruta indicada.
rm archivo.txt
Comandos cat y tail
El comando cat nos sirve para ver el contenido de ficheros de texto por consola.
cat index.html
Eso nos mostrará el contenido completo del archivo index.html de manera completa por el terminal.
A veces el archivo es muy largo y queremos simplemente ver las últimas líneas, donde quizás se encuentra la información que nos interesa. Esto es muy común por ejemplo en los archivos de logs. Entonces usamos el comando tail.
tail /var/logs/auth.log
Podemos indicar que queremos ver más líneas de las predeterminadas, con el flag «-n»:
tail -n 200 /var/logs/auth.log
Comando exit
Finalizamos con el comando exit, que nos permitirá salir del servidor y cerrar la conexión SSH. Una vez cerrada la conexión el terminal volverá a estar en nuestra máquina local y tendríamos que volver a conectar por SSH para continuar administrando el servidor.