Comandos Frecuentes en SSH - BAEHOST Blog
Comandos Frecuentes en SSH - BAEHOST Blog
Comandos Frecuentes en SSH - BAEHOST Blog
" Search
Ultimas Novedades!
Cómo instalar certi!cados SSL en Nginx con OpenSSL
Cómo generar el CSR en Nginx
Cómo optimizar imágenes en WordPress
SECCIONES DE INTERES
Home / Manuales / Uso de Putty y comandos frecuentes en SSH
Consejos
PuTTY es un cliente SSH gratuito de acceso a servidores por medio de Raw, Serial, Telnet, Novedades
Rlogin o SSH. Nos permite conectarnos con otra máquina, de modo remoto o mediante
Prensa
Serial.
Tutoriales
Podemos usar PuTTY para gestionar un servidor o una máquina remota con Linux, y para
ello lo haremos mediante SSH.
Una vez descargado PuTTY (puede hacerse desde su web o!cial) solo hay que ejecutarlo ya
que no requiere instalación, aunque hay un paquete de instalación adicional.
La interfaz es muy sencilla. Una vez puesto el nombre del servidor: nombre de dominio o su
IP y el puerto 22, que será por defecto, pulsaremos la tecla Enter:
Infraestructura de Baehost.com
Ahora necesitamos saber los comandos para poder ver directorios o archivos, crearlos, Baehost en ExpoIn…
borrarlos, instalar aplicaciones o actualizar los paquetes del sistema, entre todas las
funciones que tenemos disponibles.
Vamos a actualizar los paquetes del servidor. Lo primero es pulsar “Control + C” para
terminar el proceso anterior y seguidamente escribir otro comando, en este caso “yum
00:00 01:12
update“, aunque este depende de la distribución Linux instalada en el servidor.
La lista de carpetas más habituales en sistemas Linux es: ETIQUETAS – TEMATICA COMUN
/bin: aquí están los comandos que pueden usar todos los usuarios (incluido el root). CPANEL (14)
/dev: aqui están todos los dispositivos de nuestra máquina. INFRAESTRUCTURA (16) LINUX (12)
SEGURIDAD (13)
/home: lugar donde se almacenan las cuentas de usuarios. Algo parecido a “mis
documentos” en Windows. SERVIDOR DEDICADO (14) SSL (17)
/var: contiene información variable, como por ejemplo los logs del sistema (/var/log), correo
local, etc.
Podemos acompañar los comandos con el atributo “–help” para que nos indiquen más
detalladamente sus opciones, como por ejemplo “arch –help“.
blkid → mostrar información (nombre, etiqueta, UUID, tipo de partición) sobre los
dispositivos de bloque (discos rígidos, etc.)
skill nombre_de_usuario → cerrar sesión (2) (es preciso ejecutarlo con permisos root)
exit → salir del intérprete de comandos (si solo hay uno, equivale a cerrar sesión).
cd → ir al directorio personal.
cd .. → retroceder un nivel.
ls -a → Nos lista los archivos y directorios dentro del directorio actual, incluyendo los
archivos y directorios ocultos.
ls -laR | less → listar recursivamente el contenido del directorio actual y todos los
subdirectorios y archivos, incluyendo los ocultos, separados por página.
ls -lh →Lista el contenido del directorio mostrando la misma información que ls -l pero con
las unidades de tamaño en KB, MB, etc.
tree → mostrar los !cheros y carpetas en forma de árbol comenzando por la raíz.(1)
lstree → mostrar los !cheros y carpetas en forma de árbol comenzando por la raíz.(2)
mkdir dir1 dir2 → crear dos directorios a la vez (en la ubicación actual).
rm -rf dir1 → eliminar recursivamente y en modo forzado el directorio ‘dir1’ con todo lo que
contenga.
rm -rf dir1 dir2 → borrar dos directorios con su contenido de forma recursiva.
cp dir /* . → copiar todos los !cheros de un directorio dentro del directorio de trabajo actual.
"le "le1 → salida (volcado en pantalla) del tipo mime de un !chero texto.
iconv -f fromEncoding -t toEncoding inputFile > outputFile → crea una nueva forma del !chero
de entrada asumiendo que está codi!cado en fromEncoding y convirtiéndolo a ToEncoding.
Encontrar archivos:
"nd / -name "le1 → buscar !chero y directorio a partir de la raíz del sistema.
"nd /home/user1 -name *.bin → buscar !cheros con extensión ”. bin” dentro del directorio /
home/user1.
"nd /usr/bin -type f -atime +100 → buscar !cheros binarios no usados en los últimos 100 días.
"nd /usr/bin -type f -mtime -10 → buscar !cheros creados o cambiados dentro de los últimos
10 días.
"nd / -name *.rpm -exec chmod 755 ‘{}’ ; → buscar !cheros con extensión ”.rpm” y modi!car
permisos.
"nd . -type f -print0 | xargs -0 chmod 644 → modi!car recursivamente los permisos a todos
los !cheros bajo el directorio actual (2)
"nd / -xdev -name *.rpm → Buscar !cheros con extensión ‘.rpm’ ignorando los dispositivos
removibles como cdrom, pen-drive, etc.
"nd . -maxdepth 1 -name *.jpg -print -exec convert «{}» -resize 80×60 «thumbs/{}» ; → agrupar
!cheros redimensionados en el directorio actual y enviarlos a directorios en vistas de
miniaturas (requiere convertir desde Imagemagick).
locate *.ps → encuentra !cheros con extensión ”.ps” ejecutados primeramente con el
command updatedb.
whereis halt → mostrar la ubicación de un !chero binario, de ayuda o fuente. En este caso
pregunta dónde está el comando halt.
mount /dev/hda2 /mnt/hda2 → montar un disco llamado hda2. Veri!ca primero la existencia
del directorio ‘/ mnt/hda2’; si no está, debes crearlo.
umount /dev/hda2 → desmontar un disco llamado hda2. (Antes es necesario salir del punto
‘/mnt/hda2’).
umount -n /mnt/hda2 → correr el desmontaje sin leer el !chero /etc/mtab. Útil cuando el
!chero es de solo lectura, o el disco duro está lleno.
mount /dev/sda1 /mnt/usbdisk → montar un usb pen-drive o una memoria (sin especi!car el
tipo de sistema de archivos).
Espacio en disco:
df -h → mostrar una lista de las particiones montadas. Lista el espacio disponible en el disco.
ls -lSr | more → mostrar el tamaño de los !cheros y directorios ordenados por tamaño.
du -k –max-depth=1 | sort -k1 -nr | awk ‘{printf «%.3f GiBt%sn», $1/(1048576), $2}’ | less →
mostrar en orden descendente el tamaño de los directorios y archivos, en GiB.
rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n → mostrar el espacio usado por los paquetes
rpm instalados organizados por tamaño (Fedora, Redhat y otros).
Usuarios y grupos:
usermod -aG plugdev,dialout,pip user1 → agregar el usuario user1 a otros grupos existentes,
para incrementar sus permisos (en este caso, agregar la posibilidad de conectar dispositivos,
con!gurar y utilizar el modem)
chage -E 2011-12-31 user1 → colocar un plazo para la contraseña del usuario. En este caso
dice que la clave expira el 31 de diciembre de 2011.
newgrp grupo1 → registra a un nuevo grupo para cambiar el grupo predeterminado de los
!cheros creados recientemente.
Permisos en !cheros (usar “+” para colocar permisos y “-” para eliminar):
chmod go-rwx directory1 → quitar permiso de lectura, escritura (w) y (x) ejecución al grupo (g)
y otros (o) sobre el directorio ‘directory1’.
"nd / -perm -u+s → visualizar todos los !cheros del sistema con SUID con!gurado.
chmod u+s /bin/"le1 → colocar el bit SUID en un !chero binario. El usuario que ejecuta el
archivo también tiene los mismos permisos que el propietario.
chmod g+s /home/public → colocar un bit SGID en un directorio –similar al SUID pero por
directorio.
Atributos especiales en !cheros (usar “+” para colocar permisos y “-” para eliminar):
chattr +d "le1 → asegura que el programa ignore borrar los !cheros durante la copia de
seguridad.
chattr +i "le1 → convierte el !chero en inmutable o invariable, por lo que no puede ser
eliminado, alterado, renombrado, ni enlazado.
chattr +S "le1 → asegura que un !chero sea modi!cado, los cambios son escritos en modo
synchronous como con sync.
chattr +u "le1 → te permite recuperar el contenido de un !chero aún si este está cancelado.
rar a "le1.rar "le1 "le2 dir1 → comprimir ‘!le1’, ‘!le2’ y ‘dir1’ simultáneamente.
tar -cvf archive.tar "le1 "le2 dir1 → crear un archivo conteniendo ‘!le1’, ‘!le2′ y’dir1’.
tar -xvf archive.tar → extraer un tarball (si el archivo además está comprimido con gzip, bzip2
o xz, descomprimirlo automáticamente).
XZ_OPT=-9e tar -cJvf archive.tar.xz dir1 → crear un tarball comprimido en xz (con máxima
compresión).
tar -I pigz -cf archive.tar.gz dir1 → crear un tarball comprimido en gzip, pero utilizando pigz,
que comprime en paralelo aprovechando todos los núcleos de los microprocesadores del
equipo.
GZIP=-9 tar -czvf archive.tar.gz dir1 → crear un tarball comprimido en gzip (con máxima
compresión).
zip -r "le1.zip "le1 "le2 dir1 → comprimir, en .zip, varios archivos y directorios de forma
simultánea.
rpm -ivh –nodeeps package.rpm → instalar un paquete rpm ignorando las peticiones de
dependencias.
rpm -qa | grep httpd → mostrar todos los paquetes rpm con el nombre “httpd”.
rpm -qg «System Environment/Daemons» → mostar los paquetes rpm de un grupo software.
rpm -ql package_name → permite listar los archivos que estan instalados en un paquete rpm.
rpm -qc package_name → permite listar la con!guracion de los archivos que estan instalados
en un paquete rpm.
rpm -qf /etc/httpd/conf/httpd.conf → veri!car cuál paquete rpm pertenece a un !chero dado.
rpm -qp package.rpm -l → muestra lista de !cheros dados por un paquete rpm que aún no
ha sido instalado.
rpm -qa gpg-pubkey → veri!car la integridad de todos los paquetes rpm instalados.
rpm -V package_name → chequear el tamaño del !chero, licencias, tipos, propietario, grupo,
chequeo de resumen de MD5 y última modi!cación.
rpm -Va → chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
rpmbuild –rebuild package_name.src.rpm → construir un paquete rpm desde una fuente rpm.
yum localinstall package_name.rpm → Este instalará un YUM y tratará de resolver todas las
yum clean packages → limpiar caché rpm borrando los paquetes descargados.
yum clean headers → Para purgar completamente todos los !cheros de encabezamiento que
el sistema usa para resolver la dependencia.
yum clean all → Para eliminar de una vez todos los !cheros en cache y los !cheros de
encabezado.
dpkg -l | grep httpd → mostrar todos los paquetes deb con el nombre “httpd”.
aptitude install paquete1 paquete2 … → instala varios paquetes con sus dependencias y
recomendaciones.
aptitude -R install paquete → instala un paquete con sus dependencias, pero sin las
recomendaciones.
aptitude why paquete → lista las razones por las que se debería instalar el paquete.
aptitude why-not paquete → lista las razones por las que no se puede instalar el paquete.
aptitude -rsvW install paquete → simula la instalación de un paquete con sus dependencias y
recomendaciones, detallando cada una.
apt-"le -xi search ‘sql‘ → busca todos los paquetes que contengan un archivo o directorio con
la expresión sql (sin considerar mayúsculas o minúsculas). 3)
cat "le1 → ver los contenidos de un !chero comenzando desde la primera línea.
tac "le1 → ver los contenidos de un !chero comenzando desde la última línea.
less "le1 → parecido al commando ‘more’ pero permite avanzar, retroceder, y buscar
(compatible con algunos comandos de vi).
head -2 "le1 → ver las dos primeras líneas de un !chero (ó 10, si no se especi!ca la cantidad
de líneas).
tail -2 "le1 → ver las dos últimas líneas de un !chero (ó 10, si no se especi!ca la cantidad de
líneas).
Manipulación de texto:
cat "le1 | command( sed, grep, awk, grep, etc…) > result.txt → sintaxis general para manipular
un texto de un !chero y escribir el resultado en un !chero nuevo.
cat "le1 | command( sed, grep, awk, grep, etc…) >> result.txt → sintaxis general para manipular
un texto de un !chero y añadir resultado en un !chero existente.
grep ^Aug /var/log/messages → buscar palabras que comienzan con “Aug” en !chero
‘/var/log/messages’
grep [0-9] /var/log/messages → seleccionar todas las líneas del !chero ‘/var/log/messages’ que
contengan números.
sed -n ‘/string1/p‘ → visualizar solamente las líneas que contienen la palabra “string1”.
dos2unix "ledos.txt "leunix.txt → convertir un formato de !chero texto desde MSDOS a UNIX.
recode ..HTML < page.txt > page.html → convertir un !chero de texto en html.
fsck /dev/hda1 → reparar / chequear la integridad del !chero del sistema Linux en el disco
hda1.
fsck.ext2 /dev/hda1 → reparar / chequear la integridad del !chero del sistema ext 2 en el
disco hda1.
e2fsck /dev/hda1 → reparar / chequear la integridad del !chero del sistema ext 2 en el disco
hda1.
e2fsck -j /dev/hda1 → reparar / chequear la integridad del !chero del sistema ext 3 en el
disco hda1.
fsck.ext3 /dev/hda1 → reparar / chequear la integridad del !chero del sistema ext 3 en el
disco hda1.
fsck.vfat /dev/hda1 → reparar / chequear la integridad del !chero del sistema fat en el disco
hda1.
mke2fs -j /dev/hda1 → crear un !chero de sistema tipo Linux ext3 (periódico) en la partición
hda1.
Copia de Seguridad:
dump -0aj -f /tmp/home0.bak /home → hacer un backup completo del directorio ‘/home’.
dump -1aj -f /tmp/home0.bak /home → hacer un backup incremental del directorio ‘/home’.
scp –rpv /data"le dan@192.168.1.100:/home/susan → scp se usa para transferir todos los
subdirectorios (proporcionando un tiempo estimado y velocidad de conexión) desde el host
local al host remoto de forma segura. El comando v proporcionará información de
depuración que puede ayudar a diagnosticar un problema.
rsync -rogpav -e ssh –delete /home ip_address:/tmp → rsync a través del túnel SSH.
rsync -az -e ssh –delete ip_addr:/home/public /home/local → sincronizar un directorio local con
un directorio remoto a través de SSH y de compresión.
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz‘ → hacer una backup de un disco
duro en un host remoto a través de SSH.
dd if=/dev/sda of=/tmp/"le1 → salvar el contenido de un disco duro a un !chero. (En este caso
el disco duro es “sda” y el !chero “!le1”).
tar -Puf backup.tar /home/user → realizar un backup incremental del directorio ‘/home/user’.
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p‘ → copiar el
contenido de un directorio en un directorio remoto a través de SSH.
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p‘ → copiar un directorio
local en un directorio remoto a través de SSH.
tar cf – . | (cd /tmp/backup ; tar xf – ) → copia local conservando las licencias y enlaces desde
un directorio a otro.
"nd ~/ -type f -not -iname ‘*.mp*’ -not ( -iregex ‘.*.mozilla/.*’ -o -iregex ‘.*.thumbnails/.*’ ) -prune -
mtime 14 -print0 | xargs -0 tar -czf /var/salvas/myhome.tgz → realizar una backup de todos los
archivos de nuestro per!l de usuario modi!cados dentro de los últimos 14 días,
exceptuando los archivos mp3, mpg y similares, y los directorios .mozilla/ y .thumbnails/.
"nd /var/log -name ‘*.log’ | tar cv –"les-from=- | bzip2 > log.tar.bz2 → encontrar todos los
!cheros con extensión ‘.log’ y hacer un archivo bzip.
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 → hacer una copia del MRB (Master Boot Record) a
un disco "oppy.
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 → restaurar la copia del MBR (Master Boot Record)
salvada en un "oppy.
CDROM:
mkisofs /dev/cdrom > cd.iso → crear una imagen iso de cdrom en disco.
mkisofs /dev/cdrom | gzip > cd_iso.gz → crear una imagen comprimida iso de cdrom en disco.
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd → crear una imagen
iso de un directorio.
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom – → quemar una imagen iso comprimida.
ifcon"g eth0 → mostrar la con!guración de una interfaz de red Ethernet. Permite tambien
hacer un debug del sistema de red e interfaces.
ifcon"g eth0 promisc → con!gurar eth0 en modo promiscuo para obtener los paquetes
(sni%ng).
dhclient -r
Usando el parametro -r te permite liberar la IP actual y obtener una nueva desde el servidor
DHCP de tu sistema.
ip route show | grep default | awk {‘print $3’} → conocer la puerta de enlace predeterminada.
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 → con!gurar ruta estática para
buscar la red 192.168.0.0/16.
host www.example.com → buscar el nombre del host para resolver el nombre a una dirección
IP o buscamos una IP y nos devolvera el nombre de dominio asociado (DNS lookup). (1)
host baehost.com
host 208.43.115.82
nslookup www.example.com → buscar el nombre del host para resolver el nombre a una
dirección IP y viceversa (2).
netstat -tup → mostrar todas las conexiones de red activas y sus PID.
netstat -tupl → mostrar todos los servicios de escucha de red en el sistema y sus PID.
netstat -p → mostrar todas las conexiones activas asociadas a los sockets abiertos listados
por dirección IP y puerto.
iftop -nNP -i eth0 → mostrar en tiempo real las conexiones abiertas en eth0 y su tasa de
transferencia.
nm-tool → muestra con!guración de red (en caso de usar Network Manager obtiene los
DNS).
tracepath example.com
mtr baehost.com
ifplugstatus → Este comando indica si una interface de red tiene el cable conectado. Este
comando viene por defecto en Ubuntu. Si quieres instalarlo:
ifplugstatus
ifplugstatus eth0
Cortafuegos (iptables):
iptables -t "lter -A INPUT -p tcp –dport telnet -j ACCEPT → permitir las conexiones telnet para
entrar.
iptables -t "lter -A OUTPUT -p tcp –dport http -j DROP → bloquear las conexiones HTTP para
salir.
iptables -t "lter -A FORWARD -p tcp –dport pop3 -j ACCEPT → permitir las conexiones POP a una
cadena delantera.
iptables -t "lter -A INPUT -p tcp -m multiport –dports 80,443,8080 -m state –state NEW -m limit –
limit 4/sec –limit-burst 8 -j ACCEPT → establecer un límite de 4 peticiones por segundo de
nuevas conexiones, con posibles ráfagas ocasionales (útil para políticas de denegación por
defecto).
iptables -t "lter -A INPUT -j LOG –log-pre"x “DROP INPUT” → registrando una cadena de
entrada.
iptables-save -c > archivo → Salvar las reglas en un archivo (incluyendo los contadores de
paquetes y bytes).
iptables-restore -c < archivo → Restaurar las reglas desde un archivo (incluyendo los
contadores de paquetes y bytes).
Monitoreando y depurando:
ps -o pid,cmd -ww -C wget → listar todas las instancias del comando wget con sus
argumentos.
killall Nombre_Proceso → terminar un proceso por el nombre del comando y no por el ID.
kill -HUP $(ps -A -o state,pid –no-header | grep -e ‘^[Zz]’ | awk ‘{print $2}’ | xargs) → terminar
todos los procesos zombies.
lsof /home/user1 → muestra una lista de !cheros abiertos en un camino dado del sistema.
strace -c ls >/dev/null → mostrar las llamadas del sistema realizadas y recibidas por un
proceso.
Seguridad y Cifrado:
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/millave.crt -keyout
/etc/millave.key → crea un certi!cado auto-!rmado para cifrar el trá!co web con SSL.
apropos palabraclave → mostrar una lista de comandos que pertenecen a las palabras claves
de un programa; son útiles cuando tú sabes qué hace tu programa, pero desconoces el
nombre del comando.
man ping → mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar
la opción ‘-k’ para encontrar cualquier comando relacionado.
man -t ping | ps2pdf – ping.pdf → convertir las páginas del manual del comando ping en un
archivo pdf (para lo cual es necesario haber instalado Ghostscript).
curl & get → Estos dos comandos te permiten descargar un !chero sin abandonar el
terminal:
curl -O website.com/file
wget website.com/file
ldd /usr/bin/ssh → mostrar las bibliotecas compartidas requeridas por el programa SSH.
alias hh=’history‘ → colocar un alias para un comando. En este caso, para invocar el historial
con hh.
chsh –list-shells → es un comando adecuado para saber si tienes que hacer remoto en otra
terminal.
who -a → para mostrar quien está registrado, e imprimir hora del último sistema de
importación, procesos muertos, procesos de registro de sistema, procesos activos
producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.
Referencias:
2) Para conocer el límite de argumentos que xargs admite, puede ejecutarse el comando
echo | xargs –show-limits
3) Para que este comando funcione, después de instalado el paquete apt-"le es necesario
invocar el comando apt-"le update.
Hasta la próxima!
Comentario
Nombre *
Correo electrónico *
Web
Publicar el comentario