Primeros pasos con tu servidor: conéctate y aprende los comandos básicos

Terminal Linux con comandos SSH básicos, gestión de archivos y permisos chmod para administrar servidor Ubuntu Debian

🐧 Comandos Básicos de Servidor Linux: Tu Guía de Supervivencia SSH

¿Acabas de montar tu primer servidor y te encuentras delante de una pantalla negra que solo muestra texto? ¡Tranquilo! No hace falta ser un hacker de película para manejar un servidor Linux. Con estos comandos básicos podrás navegar, editar archivos, gestionar procesos y no morir en el intento.

Esta guía está pensada para gente que nunca ha tocado la terminal y quiere aprender lo esencial sin dramas técnicos. Vamos allá.

🔑 SSH: Tu puerta de entrada al servidor

SSH (Secure Shell) es el protocolo que te permite conectarte de forma segura a tu servidor desde cualquier sitio. Todo el tráfico va encriptado, así que nadie puede espiar lo que haces.

Conectarte por primera vez

Desde tu ordenador (Linux, Mac, o Windows 10+), abre la terminal y ejecuta:

ssh usuario@IP_DEL_SERVIDOR

Ejemplo real:

ssh pi@192.168.1.100

Te pedirá la contraseña del usuario. Escríbela (no se verá en pantalla, es normal) y pulsa Enter. Si es la primera vez, te preguntará si confías en el servidor. Escribe yes y Enter.

🎉 ¡Ya estás dentro! Verás algo como:

pi@raspberrypi:~ $

Conectar con puerto personalizado

Si cambiaste el puerto SSH del 22 predeterminado al 2222 (buena práctica para seguridad):

ssh -p 2222 usuario@IP_DEL_SERVIDOR

Salir de la sesión SSH

exit

O pulsa Ctrl + D.

📂 Navegación: Moverse entre directorios

pwd – ¿Dónde estoy?

Muestra la ruta completa del directorio actual:

pwd

Salida ejemplo:

/home/usuario

ls – Listar archivos y carpetas

Ver qué hay en el directorio actual:

ls

Opciones útiles:

ls -l      # Formato lista (permisos, tamaño, fecha)
ls -lh     # Tamaños en formato humano (KB, MB, GB)
ls -la     # Mostrar archivos ocultos (empiezan con .)
ls -lt     # Ordenar por fecha de modificación (más reciente primero)

Ejemplo salida de ls -lh:

drwxr-xr-x 2 usuario usuario 4.0K Nov  1 10:30 Documentos
-rw-r--r-- 1 usuario usuario 1.2M Oct 28 15:45 video.mp4
-rwxr-xr-x 1 usuario usuario  512 Oct 25 09:10 script.sh

La primera letra indica el tipo: d = directorio, - = archivo.

cd – Cambiar de directorio

Moverte a otra carpeta:

cd /var/www/html       # Ruta absoluta
cd Documentos          # Ruta relativa (desde donde estés)
cd ..                  # Subir un nivel (carpeta padre)
cd ~                   # Ir a tu home (/home/usuario)
cd -                   # Volver al directorio anterior

Truco: Usa Tab para autocompletar nombres de carpetas. Si escribes cd Doc y pulsas Tab, completará Documentos si existe.

📄 Ver y editar archivos

cat – Mostrar contenido de un archivo

cat archivo.txt

Muestra todo el contenido de golpe. Útil para archivos pequeños.

less – Ver archivos largos con scroll

less archivo.log

Te permite navegar con flechas, AvPág/RePág. Salir: Pulsa q.

head / tail – Ver principio o final

head -n 20 archivo.txt   # Primeras 20 líneas
tail -n 50 error.log     # Últimas 50 líneas
tail -f /var/log/syslog  # Ver logs en tiempo real (seguir creciendo)

tail -f es imprescindible para monitorizar logs de servicios. Salir: Ctrl + C.

nano – Editor de texto simple

El editor más fácil para novatos:

nano archivo.txt

Edita el texto con el teclado. Comandos:

  • Ctrl + O: Guardar (luego Enter para confirmar)
  • Ctrl + X: Salir
  • Ctrl + K: Cortar línea
  • Ctrl + U: Pegar

vim – Editor avanzado (opcional)

Más potente pero con curva de aprendizaje. Si te atreves:

vim archivo.txt

Básico de vim:

  • Pulsa i para entrar en modo INSERT (editar)
  • Escribe tu texto
  • Pulsa Esc para salir del modo INSERT
  • Escribe :wq y Enter para guardar y salir
  • Escribe :q! y Enter para salir sin guardar

🗂️ Gestión de archivos y carpetas

mkdir – Crear carpetas

mkdir mi_carpeta
mkdir -p /ruta/completa/nueva  # Crear carpetas anidadas de golpe

touch – Crear archivos vacíos

touch nuevo_archivo.txt

cp – Copiar archivos o carpetas

cp archivo.txt copia.txt
cp -r carpeta/ copia_carpeta/  # -r para copiar carpetas con todo su contenido

mv – Mover o renombrar

mv archivo.txt /ruta/destino/
mv nombre_viejo.txt nombre_nuevo.txt  # Renombrar

rm – Borrar archivos o carpetas

⚠️ CUIDADO: No hay papelera de reciclaje. Lo borrado es irrecuperable.

rm archivo.txt
rm -r carpeta/              # Borrar carpeta con su contenido
rm -rf carpeta/             # Forzar borrado sin preguntar (¡peligroso!)
rm -i archivo.txt           # Pedir confirmación antes de borrar

Nunca ejecutes rm -rf / o rm -rf /* (borra TODO el sistema).

🔍 Buscar archivos y contenido

find – Buscar archivos por nombre

find /ruta -name "archivo.txt"
find ~ -name "*.log"           # Todos los .log en tu home
find /var/www -type d -name "images"  # Buscar carpetas llamadas "images"

grep – Buscar texto dentro de archivos

grep "error" archivo.log
grep -i "warning" *.log        # -i ignora mayúsculas/minúsculas
grep -r "TODO" /proyecto       # -r busca recursivamente en carpetas
grep -n "función" script.py    # -n muestra número de línea

Combinar grep con otros comandos:

cat error.log | grep "CRITICAL"
ps aux | grep "nginx"

🔐 Permisos de archivos

En Linux, cada archivo tiene permisos para 3 grupos: propietario (u), grupo (g), y otros (o).

Leer permisos con ls -l

-rwxr-xr-- 1 usuario grupo 2048 Nov 1 10:00 script.sh

Desglose:

  • -: Tipo (- = archivo, d = directorio)
  • rwx: Propietario puede Read, Write, eXecute
  • r-x: Grupo puede Read y eXecute (no Write)
  • r--: Otros solo Read

chmod – Cambiar permisos

Método numérico (más usado):

  • r = 4 (read)
  • w = 2 (write)
  • x = 1 (execute)

Suma los valores:

chmod 755 script.sh
# 7 (4+2+1) = rwx para propietario
# 5 (4+1)   = r-x para grupo
# 5 (4+1)   = r-x para otros

Ejemplos comunes:

chmod 644 archivo.txt   # rw-r--r-- (archivo normal)
chmod 755 script.sh     # rwxr-xr-x (script ejecutable)
chmod 700 secreto.key   # rwx------ (solo propietario accede)
chmod +x script.sh      # Añadir permiso de ejecución (método simbólico)

Método simbólico:

chmod u+x script.sh     # Añadir eXecute al User (propietario)
chmod g-w archivo.txt   # Quitar Write al Grupo
chmod o=r archivo.txt   # Establecer permisos de Others solo a Read
chmod a+r archivo.txt   # Añadir Read a All (u+g+o)

chown – Cambiar propietario

sudo chown usuario archivo.txt
sudo chown usuario:grupo archivo.txt
sudo chown -R www-data:www-data /var/www/html  # -R recursivo para todo el contenido

Ejemplo típico: Dar permisos al servidor web Apache/Nginx

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

📊 Información del sistema

df – Espacio en disco

df -h        # Espacio usado/libre en particiones (-h = formato humano)

Salida ejemplo:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   35G   13G  73% /
/dev/sdb1       500G  120G  380G  24% /datos

du – Tamaño de carpetas

du -sh carpeta/           # Tamaño total de carpeta
du -h --max-depth=1 .     # Tamaño de cada subcarpeta (1 nivel)

free – Memoria RAM

free -h

Muestra RAM total, usada, libre y swap.

top – Monitor de procesos en tiempo real

top

Muestra procesos ordenados por uso de CPU/RAM. Salir: q.

Alternativa moderna: htop (más visual, requiere instalación con sudo apt install htop)

uname – Info del sistema

uname -a     # Kernel, arquitectura, hostname

⚙️ Gestión de procesos

ps – Ver procesos en ejecución

ps aux                # Todos los procesos con detalles
ps aux | grep nginx   # Filtrar procesos de nginx

kill – Detener un proceso

Primero obtén el PID (Process ID) con ps o top:

kill 1234           # Detener proceso con PID 1234
kill -9 1234        # Forzar cierre (SIGKILL)

systemctl – Gestionar servicios

En sistemas con systemd (Ubuntu 16.04+, Debian 8+, etc.):

sudo systemctl status nginx      # Ver estado del servicio
sudo systemctl start nginx       # Iniciar
sudo systemctl stop nginx        # Detener
sudo systemctl restart nginx     # Reiniciar
sudo systemctl enable nginx      # Activar al arrancar el sistema
sudo systemctl disable nginx     # Desactivar al arrancar

📦 Gestión de paquetes (apt)

En Debian/Ubuntu/Raspberry Pi OS:

Actualizar lista de paquetes

sudo apt update

Actualizar paquetes instalados

sudo apt upgrade

Instalar un paquete

sudo apt install nginx

Desinstalar un paquete

sudo apt remove nginx
sudo apt purge nginx     # También borra archivos de configuración

Buscar paquetes

apt search nombre_paquete

Limpiar caché de paquetes descargados

sudo apt clean
sudo apt autoremove  # Borrar dependencias huérfanas

🌐 Red y conectividad

ping – Comprobar conectividad

ping google.com
ping 192.168.1.1   # Ping al router
ping -c 5 8.8.8.8  # Solo 5 intentos (-c = count)

Salir: Ctrl + C.

ip – Ver interfaces de red

ip a              # Mostrar todas las interfaces y sus IPs
ip route          # Ver tabla de rutas (gateway)

curl – Descargar archivos o hacer peticiones HTTP

curl https://ejemplo.com              # Ver contenido HTML
curl -O https://ejemplo.com/archivo.zip  # Descargar archivo
curl -I https://ejemplo.com              # Solo ver headers HTTP

wget – Descargar archivos

wget https://ejemplo.com/archivo.zip
wget -c URL        # Continuar descarga interrumpida

🔄 Transferir archivos (SCP / SFTP)

scp – Copiar archivos vía SSH

Desde tu PC al servidor:

scp archivo.txt usuario@IP_SERVIDOR:/ruta/destino/

Desde el servidor a tu PC:

scp usuario@IP_SERVIDOR:/ruta/archivo.txt ./

Copiar carpetas completas:

scp -r carpeta/ usuario@IP_SERVIDOR:/ruta/destino/

rsync – Sincronización avanzada

Más eficiente que scp (solo copia diferencias):

rsync -avz carpeta/ usuario@IP_SERVIDOR:/backup/
# -a = archive mode (permisos, timestamps)
# -v = verbose
# -z = compresión

🛡️ Seguridad básica

sudo – Ejecutar comandos como administrador

Comandos que afectan al sistema requieren sudo:

sudo apt install paquete
sudo nano /etc/nginx/nginx.conf

Te pedirá tu contraseña la primera vez en la sesión.

passwd – Cambiar contraseña

passwd           # Cambiar tu propia contraseña
sudo passwd root # Cambiar la contraseña de root

ufw – Firewall simple

sudo ufw status                  # Ver estado
sudo ufw enable                  # Activar firewall
sudo ufw allow 22/tcp            # Permitir SSH
sudo ufw allow 80/tcp            # Permitir HTTP
sudo ufw allow 443/tcp           # Permitir HTTPS
sudo ufw deny 8080/tcp           # Bloquear puerto
sudo ufw delete allow 80/tcp     # Borrar regla

⚠️ No bloquees el puerto 22 (SSH) si estás conectado remotamente o te quedarás fuera.

📊 Tabla resumen comandos esenciales

Categoría Comando Descripción
Conexión ssh user@IP Conectar al servidor
Navegación pwd Directorio actual
ls -lh Listar archivos con detalles
cd carpeta Cambiar directorio
Archivos cat archivo Ver contenido
nano archivo Editar archivo
cp origen destino Copiar
mv origen destino Mover/renombrar
rm archivo Borrar
Permisos chmod 755 archivo Cambiar permisos
chown user:group archivo Cambiar propietario
Sistema df -h Espacio en disco
free -h Memoria RAM
top Monitor procesos
Servicios systemctl status nginx Estado servicio
systemctl restart nginx Reiniciar servicio
Paquetes apt update Actualizar lista
apt install paquete Instalar paquete
Red ping IP Comprobar conectividad
curl URL Petición HTTP
Transferir scp archivo user@IP:/ruta Copiar por SSH

❓ FAQs sobre comandos Linux

¿Qué diferencia hay entre SSH y Telnet?

SSH encripta toda la comunicación (contraseñas, comandos, datos), mientras que Telnet envía todo en texto plano. Nunca uses Telnet para conectarte a servidores, es completamente inseguro. SSH es el estándar desde hace décadas.

¿Puedo recuperar archivos borrados con rm?

No hay papelera de reciclaje en la terminal. Una vez ejecutas rm, el archivo se borra del sistema de archivos. Recuperarlo requiere herramientas forenses complejas (extundelete, photorec) y no siempre funciona. Prevención: Haz backups regulares o usa rm -i para pedir confirmación antes de borrar.

¿Cómo sé si un comando necesita sudo?

Si intentas ejecutar un comando y recibes Permission denied o Operation not permitted, prueba de nuevo con sudo delante. Comandos que modifican archivos del sistema (en /etc, /var, /usr) o gestionan servicios requieren sudo.

¿Puedo usar SSH desde Windows?

Sí. Windows 10+ incluye un cliente SSH nativo en PowerShell/CMD. Ejecuta ssh user@IP igual que en Linux/Mac. Alternativas: PuTTY (cliente gráfico clásico), Windows Terminal (moderna y recomendada), o MobaXterm (completa con SFTP integrado).

¿Qué permisos debo poner a los scripts?

Para que un script sea ejecutable: chmod +x script.sh (equivale a 755). Si solo tú debes ejecutarlo: chmod 700 script.sh. Para archivos de configuración sensibles (claves privadas SSH): chmod 600 archivo.key (solo propietario lee/escribe, nadie más accede).

¿Cómo veo qué proceso está usando un puerto?

sudo lsof -i :80       # Ver qué usa el puerto 80
sudo netstat -tulpn | grep :3000  # Alternativa con netstat

Útil cuando intentas iniciar un servicio y dice que el puerto ya está ocupado.

¿Puedo ejecutar comandos sin esperar a que terminen?

Sí, añade & al final del comando para ejecutarlo en segundo plano:

./script_largo.sh &

O usa nohup si quieres que siga corriendo aunque cierres la sesión SSH:

nohup ./script_largo.sh &

Ver procesos en background: jobs. Traer al frente: fg.

¿Cómo busco un archivo cuando no recuerdo dónde está?

sudo find / -name "nombre_archivo" 2>/dev/null

El 2>/dev/null oculta errores de permisos denegados. Si buscas por contenido, usa grep:

grep -r "texto_buscado" /ruta/inicial

¿Qué es la diferencia entre apt y apt-get?

apt es la versión moderna (desde Ubuntu 16.04 / Debian 8) con mejor UX (barra de progreso, colores). apt-get es la herramienta clásica, sigue funcionando perfectamente. Para uso diario, usa apt. Para scripts automatizados, usa apt-get (sintaxis más estable).

¿Cómo redirijo la salida de un comando a un archivo?

comando > archivo.txt      # Sobrescribe el archivo
comando >> archivo.txt     # Añade al final del archivo (append)
comando 2>&1 | tee log.txt # Mostrar en pantalla Y guardar en archivo

Ejemplo: Guardar logs de instalación:

sudo apt install nginx 2>&1 | tee instalacion_nginx.log

¿Cómo me conecto con clave SSH en lugar de contraseña?

Genera un par de claves en tu PC:

ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"

Copia la clave pública al servidor:

ssh-copy-id usuario@IP_SERVIDOR

A partir de ahora, SSH no pedirá contraseña. Más seguro y cómodo. Protege tu clave privada (~/.ssh/id_ed25519) con una passphrase.

¿Puedo cancelar un comando que está tardando mucho?

Sí, pulsa Ctrl + C para interrumpir el comando actual. Si un proceso se ha bloqueado y no responde a Ctrl+C, pulsa Ctrl + Z para pausarlo, luego mátalo con kill -9 %1 (si era el job 1).

¿Cómo automatizo comandos para que se ejecuten periódicamente?

Usa cron. Edita tu crontab:

crontab -e

Añade líneas con el formato minuto hora día mes día_semana comando:

0 2 * * * /home/usuario/backup.sh   # Ejecutar backup.sh cada día a las 2:00 AM
*/15 * * * * /usr/bin/check_service.sh  # Cada 15 minutos

🎸 Resumen punk

Con estos comandos básicos puedes sobrevivir (y prosperar) en cualquier servidor Linux. No necesitas memorizarlos todos de golpe: usa esta guía como referencia y, con la práctica, los más comunes se quedarán en tu memoria muscular.

La terminal puede parecer intimidante al principio, pero es increíblemente potente. Un par de comandos bien ejecutados pueden hacer el trabajo de horas de clics en interfaces gráficas.

Consejo final: Experimenta en una máquina virtual o servidor de pruebas antes de ejecutar comandos destructivos (rm -rf, chmod -R, etc.) en producción. Y recuerda: los backups salvan vidas.

¡A trastear en la terminal! 🚀🐧

Por ziru

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.