SSH es un protocolo de red desarrollado en 1995 para establecer una conexión estable y segura con servidores remotos. Hoy en día, se utiliza ampliamente con VPS/VDS y servidores dedicados. La transmisión de datos a través de canales protegidos mediante métodos criptográficos garantiza un nivel de seguridad de la información excepcionalmente alto.
Los administradores utilizan clientes SSH especiales y una serie de comandos para controlar remotamente el servidor, trabajar con archivos de texto, material multimedia y otros formatos. En este artículo, explicaremos para qué sirven los comandos SSH, qué tipos existen y cómo usarlos.
Comandos SSH: explicación sencilla
Para entender mejor el concepto, imaginemos una situación: vives en Madrid y el cliente en Barcelona tiene problemas con su tienda online alojada en un servidor local. Hay varias opciones:
- Dejarlo todo y volar a Barcelona para resolver el problema en persona.
- Mantener la calma, conectarte remotamente al servidor vía SSH, encontrar y solucionar los errores desde la comodidad de tu oficina en Madrid.
El envío de comandos y paquetes de datos se realiza a través del protocolo SSH seguro.
Si logras conectarte de esta manera a un servidor o PC remoto, es como si hubieras conectado tu teclado a él. A partir de ese momento, puedes ejecutar programas, realizar operaciones y acciones previstas en la línea de comandos.
¿Qué puedes hacer con los comandos SSH?
Puedes usar los comandos SSH para:
- Configurar el hardware del servidor.
- Programar.
- Instalar WordPress, Bitrix, OpenCart y otros CMS.
- Detectar y solucionar errores en el sitio web.
- Iniciar y detener software, incluso el que se ha bloqueado.
- Copiar, pegar y mover archivos.
- Configurar los parámetros de seguridad del PC y los archivos.
- Reiniciar el servidor.
- Eliminar archivos, formatear el disco duro.
- Ejecutar archivos remotamente.
Esta lista no es exhaustiva, pero da una idea de las posibilidades que ofrece el trabajo remoto con un servidor.
Breve descripción de la conexión y el trabajo con SSH
La interacción con servidores virtuales y dedicados a través del protocolo SSH se realiza en varias etapas utilizando comandos bastante sencillos. Los analizaremos con más detalle.
Iniciar el cliente SSH
Si usas MacOS, Linux u otros sistemas Unix, no necesitas descargar ni instalar nada: estos sistemas operativos ya incluyen un cliente SSH (Terminal). Para iniciarlo, presiona Ctrl+Alt+T.
Luego, para conectarte al servidor remoto, introduce el siguiente comando en la línea de comandos:
ssh root@15.44.45.66Donde:
root: nombre del superusuario (normalmente, la conexión se realiza a través de esta cuenta). Si utilizas otro nombre de usuario, escríbelo en lugar de “root”.15.44.45.66: dirección IP del servidor remoto.
Por defecto, se utiliza el puerto 22 para la conexión SSH. El puerto es como el número de un autobús que recorre una ruta. Todos saben que puedes llegar a la parada SSH en el autobús-puerto número 22. Pero, las cosas cambian, y a veces, en lugar del autobús habitual, aparece, por ejemplo, una furgoneta con el número 320.
El puerto 22 estándar se puede reemplazar por otro, lo que aumenta la seguridad de la conexión. Para ello, se utiliza el comando:
ssh -p número_puerto nombre_usuario@IP_servidorWindows no tiene un cliente SSH propio; tendrás que descargarlo por separado. Una de las opciones más populares es PuTTY, con una interfaz gráfica para una configuración más sencilla de los parámetros de conexión remota.
Conexión SSH
El establecimiento de la conexión se realiza según el siguiente algoritmo:
- El cliente SSH solicita la conexión al servidor.
- Los participantes de la conexión se identifican mutuamente y acuerdan los protocolos de cifrado a utilizar.
- Se crea un canal seguro y estable para el envío de comandos.
Los ordenadores o portátiles remotos también pueden actuar como servidores en una conexión SSH.
Intercambio de claves de cifrado
Después de iniciar el cliente SSH:
- El servidor remoto envía al cliente una lista de protocolos de cifrado con los que puede trabajar.
- Si el cliente también puede trabajar con estos protocolos, se crea una conexión segura y fiable entre el cliente y el servidor mediante herramientas criptográficas. Es prácticamente imposible modificarla o vulnerarla.
- Cada parte de la conexión recibe una clave especial que se utiliza para cifrar y descifrar los comandos.
Si la conexión se realiza correctamente, en la primera sesión, el servidor solicitará la confirmación de la conexión:
Are you sure you want to continue connecting (yes/no)?Finaliza la operación e introduce “yes”. De esta manera, has realizado una conexión única. En el futuro, si se modifican la configuración o los parámetros de la conexión, los participantes sabrán que algo va mal.
Posteriormente, puedes copiar la clave en el servidor para acceder a él sin introducir el nombre de usuario y la contraseña. Puedes hacerlo así:
ssh-copy-id -i ruta_a_la_clave root@IP_servidorEso es todo. Se ha establecido una conexión segura a través del protocolo SSH. Ahora puedes administrar el servidor remoto desde prácticamente cualquier lugar del mundo.
Acceso root
Por defecto, el acceso root está permitido al usar SSH, pero esto compromete la seguridad de la conexión. Por lo tanto, después de conectarte, se recomienda descomentar la línea:
PermitRootLogin noLectura recomendada: SSH sin Contraseña: Cómo Configurar el Acceso SSH mediante Clave en Linux
Además, para permitir el acceso solo a usuarios específicos (uno o varios), usa el siguiente comando:
AllowUsers Usuario1, Usuario2, Usuario3Donde Usuario1, Usuario2, Usuario3 son los usuarios a los que se permite el acceso.
Lista de comandos SSH y conceptos básicos de la línea de comandos
Analizaremos los comandos principales y las habilidades básicas para trabajar con el protocolo SSH.
Línea de comandos, atajos de teclado y símbolos adicionales
Al conectarte a un servidor remoto mediante SSH, no verás el escritorio o la interfaz gráfica habitual. Verás una pantalla negra con líneas de texto. Esto se llama línea de comandos, que es una interfaz de texto del software.
Para interactuar con la utilidad, debes escribir un comando SSH específico en la línea de comandos en forma de texto, y el programa realizará las tareas asignadas.
Además de los comandos, se pueden usar símbolos adicionales:
;: actúa como separador, permitiendo escribir y activar varios comandos a la vez:
cd ~/Documents; mkdir Primera_carpeta&&: otro separador. La diferencia es que los comandos separados por&&se ejecutan secuencialmente; el siguiente comando solo se ejecuta si el anterior se ha completado correctamente:
cd ~/Documents && mkdir Primera_carpeta|: ejecuta dos comandos diferentes simultáneamente.~: abreviatura de/home/nombre_de_cuenta/.
Lee también: Ejecutar un Comando desde Otro Usuario en Unix/Linux
También puedes simplificar el trabajo con SSH en la consola mediante atajos de teclado:
↑: abre el comando ejecutado anteriormente.Ctrl+C: detiene el proceso en ejecución.Ctrl+D: similar aCtrl+C, pero se interpreta como la intención de salir del programa.Ctrl+A: mueve el cursor al principio de la línea actual.Ctrl+E: mueve el cursor al final de la línea actual.Ctrl+W: borra la palabra en la línea actual.Ctrl+U: borra toda la línea.Ctrl+Shift+C: copiar.Ctrl+Shift+V: pegar.
Comandos básicos
Analizaremos los comandos SSH más utilizados:
- sudo: otorga privilegios de superusuario para el comando siguiente, si es necesario ejecutarlo como administrador.
- ls: muestra el contenido que te rodea, es decir, todos los directorios y archivos. No es necesario cambiar a la carpeta que te interesa; puedes indicar su ruta:
ls ~/Escritorio/adictosalinux- cd: se utiliza para cambiar a cualquier carpeta seleccionada:
cd ~/Escritorio/servidorcto- mkdir: permite crear una nueva carpeta:
mkdir ~/Escritorio/alojamiento_compartidorm: comando para eliminar carpetas y su contenido (documentos, multimedia, fotos) sin posibilidad de recuperación:
rm ~/Escritorio/papeleracp: se utiliza para crear una copia de un archivo especificado en un directorio seleccionado:
cp ~/Documentos/adictosalinux.txt /home/adictosalinux/Escritorio/importante- mv: comando para mover archivos:
mv ~/Escritorio/adictosalinux.txt ~/DocumentosTambién se puede utilizar para cambiar el nombre de un archivo:
mv ~/Escritorio/adictosalinux.txt adictosalinux-42.txt- find: busca archivos y carpetas en el sistema de archivos por tipo o nombre. Por ejemplo, este comando buscará carpetas con el nombre “adictosalinux”:
find -type d -name adictosalinux- history: por defecto, muestra las 10 últimas herramientas o aplicaciones utilizadas. Para cambiar este número a cualquier otro:
history 20clear: elimina de la sesión de consola actual todos los datos introducidos anteriormente, el historial de comandos ejecutados y el contenido de los archivos abiertos.
Comandos para trabajar con carpetas y archivos
ls -lia: muestra la lista del contenido del directorio (todos los archivos y carpetas, incluidos los ocultos) en orden alfabético, indicando su tamaño actual.- pwd: muestra la ruta completa a la carpeta actual.
cd / && du -hs *: comando útil para limpiar rápidamente un disco duro lleno, se utiliza para buscar el directorio con la mayor cantidad de archivos.df: muestra el espacio libre en disco del servidor.cp -r Carpeta1 Carpeta2: copia la primera carpeta con todo su contenido en el segundo directorio.du -sh: muestra cuánto espacio ocupa la carpeta actual y sus subcarpetas.du -sh *: muestra el tamaño de cada archivo en la carpeta actual.touch: crea un archivo del formato especificado en el directorio seleccionado:
touch ~/Escritorio/adictosalinux.txtfsck -y: comprobación automática con posterior corrección de errores del sistema de archivos.
Comandos para trabajar con archivos comprimidos
tar cf Archivo.tar adictosalinux.txt: crea un archivo comprimido en formato .tar que contiene el archivo especificado.tar xf Archivo.tar: descomprime el archivo.tar czf Archivo.tar.gz adictosalinux.txt: crea un archivo comprimido con compresión Gzip.tar xzf Archivo.tar.gz: descomprime este tipo de archivo.gzip adictosalinux.txt: comprime el documento.zip -r Archivo.zip /home/adictosalinux/Escritorio/Carpeta/: añade el contenido del directorio especificado al archivo.unzip: descomprime el archivo (la sintaxis es similar).
Comandos para gestionar procesos
ps -e: muestra en pantalla todos los procesos activos en ese momento.top: muestra los procesos ejecutados por el usuario con información sobre la carga de cada uno en la CPU, la memoria RAM ocupada y el tiempo de funcionamiento. Similar al administrador de tareas de Windows.kill PID: comando específico que permite finalizar el proceso actual con el código PID especificado (en lugar de PID se introduce un número).killall: permite finalizar un proceso conociendo solo su nombre. No se necesita el código PID.bg: muestra la lista de tareas detenidas y en segundo plano.fg: muestra las últimas tareas.
Comandos para trabajar con información del sistema
rebootoshutdown -r: reinicia el servidor.free: muestra información sobre el uso de la memoria RAM (cuánta está ocupada y cuánta está libre).vmstat: muestra información sobre la memoria, los procesos, el grado de carga de la CPU y mucho más. Permite monitorizar el estado y el rendimiento del servidor.uptime: comando funcional y frecuentemente utilizado por los administradores del sistema, que muestra el tiempo de funcionamiento ininterrumpido del servidor sin reiniciar.date: fecha actual.cal: muestra el calendario del mes actual.cat /proc/cpuinfoomeminfo: muestra las características del procesador o de la memoria RAM respectivamente.
Comandos para trabajar con la configuración de red
ifconfig: muestra las interfaces de red actuales.ifconfig -a: permite acceder a la lista completa de interfaces, incluyendo las que no están activas en este momento.ifconfig eth1 down: desactiva la interfaz eth1.ifconfig eth1 up: activa la interfaz eth1.ping adictosalinux.com: ping al sitio web especificado, comprobación de la conexión en las redes TCP/IP.dig adictosalinux.com: muestra información sobre los servidores DNS del sitio web.wget dirección_enlace: permite descargar un archivo desde la dirección especificada. Se pueden especificar varias URL a la vez.wget -c dirección_enlace: continúa una descarga interrumpida.
Comandos para controlar los permisos de acceso
chown: comando necesario para asignar un propietario a las carpetas y archivos del sistema:
chown adictosalinux ~/Escritorio/archivo.jpg
#adictosalinux (nombre de cuenta)chmod: se utiliza para cambiar los permisos de acceso a una carpeta o archivo. Por ejemplo, para asignar permisos de lectura y escritura a un archivo:
chmod 777 ~/Escritorio/foto22.pngConclusión
Con los comandos SSH, puedes trabajar remotamente con cualquier archivo, configurar las funciones de red y los parámetros del servidor, y mucho más. En cualquier caso, la conexión SSH se caracteriza por una interfaz extremadamente sencilla y concisa y una alta seguridad en la transmisión de cualquier tipo de datos.
$ ./guia-ssh –descargar –gratis 🚀
Descarga esta hoja de trucos con comandos esenciales para gestionar servidores via SSH. 💻 ¡Es gratis! Si te gusta, apóyanos con una donación para crear más contenido gratuito. 💖







Pingback: Cómo Montar Servidor FTP en Ubuntu (Guía Paso a Paso)