Guía básica de comandos SSH para SysAdmins (con ejemplos)
¿Qué es SSH y por qué todo SysAdmin debería dominarlo?
SSH (Secure Shell) es el protocolo estándar para administrar servidores de forma remota y segura. Si trabajas con hosting, VPS o servidores dedicados, SSH es tu navaja suiza: te permite ejecutar comandos, transferir archivos, reiniciar servicios y diagnosticar problemas desde cualquier parte del mundo, como si estuvieras sentado frente a la máquina.
Para un SysAdmin, dominar SSH no es opcional, es imprescindible. Con esta guía básica de comandos SSH, pasarás de copiar y pegar comandos sin entender nada, a tener una base sólida para gestionar cualquier sistema Linux con confianza.
Vamos a lo práctico. Aquí no encontrarás teoría aburrida, sino ejemplos reales que puedes probar hoy mismo en tu servidor.
Primeros pasos: conectarse por SSH
1. La conexión básica
El comando más fundamental es ssh. Su sintaxis es simple:
ssh usuario@direccion_ip_o_dominio
Ejemplo práctico:
ssh root@192.168.1.100
Si es la primera vez que te conectas, verás un mensaje preguntando si confías en el host. Escribe yes y presiona Enter. Luego te pedirá la contraseña.
[TIP]: Si usas un puerto diferente al 22 (el predeterminado), añade -p:
ssh -p 2222 admin@midominio.com
2. Conexión con clave pública (la forma segura)
Usar contraseñas es cómodo, pero no es lo más seguro. Los SysAdmins profesionales usan claves SSH. Primero generas una clave en tu máquina local:
ssh-keygen -t rsa -b 4096
Esto crea dos archivos: id_rsa (tu clave privada, ¡nunca la compartas!) y id_rsa.pub (tu clave pública). Luego copias la pública al servidor:
ssh-copy-id usuario@servidor
A partir de ese momento, podrás conectarte sin contraseña.
[WARNING]: Nunca compartas tu clave privada. Si alguien la obtiene, tendrá acceso total a tus servidores.
Comandos esenciales para moverte por el servidor
Una vez conectado, necesitas saber dónde estás y qué hay alrededor. Estos son los comandos Linux básicos que usarás a diario:
3. pwd – ¿Dónde estoy?
pwd
Muestra la ruta completa del directorio actual. Útil cuando llevas un rato saltando entre carpetas y pierdes la noción.
4. ls – Listar archivos
ls -la
El -l muestra permisos, propietario, tamaño y fecha. El -a incluye archivos ocultos (los que empiezan por .).
[TIP]: Combínalo con -h para ver tamaños legibles:
ls -lah
5. cd – Cambiar de directorio
cd /var/www/html
Para volver al directorio anterior: cd ... Para ir a tu home: cd ~. Para ir al último directorio en el que estabas: cd -.
6. mkdir y rmdir – Crear y eliminar carpetas
mkdir nueva_carpeta
rmdir carpeta_vacia
Para eliminar una carpeta con todo su contenido (¡cuidado!):
rm -rf carpeta
[WARNING]: rm -rf es peligroso. No lo uses si no estás 100% seguro de lo que estás borrando. Un rm -rf / borraría todo el sistema.
Gestión de archivos: copiar, mover y editar
7. cp – Copiar archivos
cp archivo.txt /ruta/destino/
Para copiar directorios completos, usa -r (recursivo):
cp -r /var/www/misitio /backup/misitio
8. mv – Mover o renombrar
mv archivo.txt /otra/ubicacion/
mv archivo.txt nuevo_nombre.txt
9. nano – El editor de texto amigable
Para editar archivos de configuración, nano es perfecto para principiantes:
nano /etc/nginx/sites-available/misitio.conf
Dentro de nano: Ctrl+O para guardar, Ctrl+X para salir. Así de simple.
[INFO]: Si prefieres algo más potente, prueba vim, pero ten en cuenta que tiene una curva de aprendizaje más pronunciada.
Permisos y propietarios: el corazón de la seguridad en Linux
10. chmod – Cambiar permisos
Los permisos se representan con números: r (lectura)=4, w (escritura)=2, x (ejecución)=1.
chmod 755 script.sh
Esto da: al propietario todo (7), al grupo lectura+ejecución (5), y a otros lectura+ejecución (5).
11. chown – Cambiar propietario
chown www-data:www-data /var/www/html
Muy útil cuando un sitio web no puede escribir archivos porque el propietario es incorrecto.
Procesos y servicios: mantener el servidor vivo
12. ps – Ver procesos
ps aux
Muestra todos los procesos en ejecución. Para buscar uno concreto:
ps aux | grep apache
13. kill – Terminar procesos
kill -9 12345
El -9 fuerza la terminación. El número es el PID (identificador del proceso).
[WARNING]: Usa kill -9 solo cuando el proceso no responda a un kill normal. Forzar la muerte puede dejar datos corruptos.
14. systemctl – Gestionar servicios
En sistemas modernos con systemd:
systemctl status nginx
systemctl restart apache2
systemctl enable mysql
Estos comandos son oro puro para un SysAdmin. Con ellos puedes reiniciar servicios tras un cambio de configuración o ver si algo está fallando.
Red y conectividad: diagnosticar problemas
15. ping – ¿Está vivo el servidor?
ping -c 4 google.com
El -c 4 limita a 4 paquetes. Si recibes respuestas, hay conectividad.
16. netstat o ss – Puertos abiertos
ss -tulpn
Muestra qué puertos están escuchando y qué proceso los usa. Imprescindible para detectar servicios no deseados.
17. curl – Probar peticiones web
curl -I https://misitio.com
El -I muestra solo las cabeceras HTTP. Perfecto para comprobar si un sitio responde correctamente.
Transferencia de archivos entre servidores
18. scp – Copia segura
scp archivo.zip usuario@servidor:/ruta/destino/
Para copiar desde el servidor a tu máquina local:
scp usuario@servidor:/ruta/archivo.zip .
19. rsync – Sincronización avanzada
rsync es la herramienta favorita de los SysAdmins para backups:
rsync -avz /var/www/ usuario@backupservidor:/backup/www/
El -a conserva permisos, -v es verbose (muestra lo que hace) y -z comprime los datos.
Monitorización básica: ¿qué está pasando?
20. top o htop – Uso de recursos
top
Muestra procesos, CPU, memoria y carga del sistema en tiempo real. Si instalas htop (apt install htop), es mucho más visual.
21. df – Espacio en disco
df -h
El -h muestra tamaños legibles. Si el disco está al 95%, tienes un problema.
22. free – Memoria RAM
free -h
Muestra memoria total, usada y libre. También la memoria swap.
Comandos combinados: el poder de la tubería (|)
La tubería permite encadenar comandos. Por ejemplo:
ps aux | grep nginx | grep -v grep
Esto busca procesos de nginx y excluye la propia línea del grep. Muy útil para ver si un servicio está corriendo.
Otro ejemplo práctico:
history | grep "chmod"
Muestra todos los comandos chmod que has ejecutado. Perfecto para recordar qué hiciste.
Automatización con scripts básicos
Un SysAdmin eficiente no repite comandos a mano. Crea scripts. Por ejemplo, un backup sencillo:
#!/bin/bash
fecha=$(date +%Y%m%d)
tar -czf /backup/sitio_$fecha.tar.gz /var/www/html/
Guárdalo como backup.sh, dale permisos de ejecución (chmod +x backup.sh) y ejecútalo con ./backup.sh.
Errores comunes y cómo solucionarlos
"Permission denied"
El usuario no tiene permisos sobre el archivo o directorio. Usa ls -la para ver quién es el propietario y chmod para ajustar permisos.
"Connection refused"
El servicio SSH no está corriendo o el puerto está bloqueado. Verifica con systemctl status ssh o ss -tulpn | grep 22.
"Host key verification failed"
El servidor ha cambiado su clave (posible reinstalación). Edita ~/.ssh/known_hosts y elimina la línea correspondiente.
Consejos finales para tu día a día
-
Usa alias: Define alias en tu
.bashrcpara comandos largos que uses a menudo. -
Guarda tus conexiones: Crea un archivo
~/.ssh/configcon tus servidores:
Host mi-servidor
HostName 192.168.1.50
User root
Port 22
Luego solo escribes ssh mi-servidor.
-
Haz copias de seguridad: Antes de tocar configuraciones críticas, copia el archivo original.
-
Practica en local: Si tienes miedo de romper algo, instala una máquina virtual con Linux y practica ahí.
Preguntas frecuentes
¿Qué hago si olvidé la contraseña de root?
Reinicia el servidor en modo single-user o usa el panel de control de tu proveedor de hosting para restablecerla. En algunos paneles como Syspanel (accesible por el puerto 2106), puedes gestionar usuarios y accesos desde la interfaz web.
¿SSH es seguro?
El protocolo en sí es muy seguro si usas claves en lugar de contraseñas y desactivas el login con contraseña. Cambia el puerto por defecto (22) a otro como 2222 para reducir ataques automatizados.
¿Puedo usar SSH en Windows?
Sí. Windows 10 y 11 incluyen OpenSSH por defecto. Abre PowerShell o CMD y usa los mismos comandos.
¿Cómo sé qué comandos he ejecutado antes?
Usa history para ver tu historial. O history | grep "palabra_clave" para buscar algo concreto.
Esta guía básica de comandos SSH es tu punto de partida. No intentes memorizar todo de golpe. Guarda esta página, practica cada comando en un servidor de pruebas y, poco a poco, se convertirán en algo natural.
Recuerda: todo SysAdmin ha cometido errores. La clave está en aprender de ellos y, sobre todo, en tener backups. Ahora, abre tu terminal y empieza a explorar. Tu servidor te está esperando.
