Comandos avanzados de SSH – SSH Tips & Tricks
Posted: noviembre 29th, 2010 | Author: admin | Filed under: Recursos Web, Servidores Linux | 1 Comment »1) Acceso SSH sin contraseña:
ssh-copy-id user@host
Generamos las llaves mediante ssh-keygen y luego las copiamos al equipo para permitir el acceso sin clave.
2) Crear un tunel desde un puerto local a un equipo remoto en puerto 80:
ssh -N -L2002:localhost:80 equiporemoto
Nos permite acceder a un sitio web a través de http://localhost:2002/
3) Conectar micrófono a un equipo remoto:
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
Nos permite comunicar nuestro microfono con la salida de audio del equipo remoto.
4) Comparar un archivo remoto con uno local:
ssh user@host cat /path/to/remotefile | diff /path/to/localfile –
Útil para saber si un archivo local es idéntico a uno remoto.
5) Montar unidad a través de SSH
sshfs name@server:/path/to/folder /path/to/mount/point
Permite montar un directorio en forma remota, requiere SSHFS: http://fuse.sourceforge.net/sshfs.html
6) Conexión SSH con un host intermedio:
ssh -t reachable_host ssh unreachable_host
Podemos acceder a un equipo inaccesible desde nuestra red, pero que es accesible desde une red remota. Hacemos una conexión con un intermediario que nos permite acceder.
7) Copiar de host1 a host2 mediante el equipo local:
ssh root@host1 “cd /somedir/tocopy/ && tar -cf – .” | ssh root@host2 “cd /samedir/tocopyto/ && tar -xf -”
Útil cuando dos equipos no pueden conectarse en forma directa, utilizamos nuestro equipo como intermediario.
8) Ejecutar programas de entorno gráfico en forma remota:
ssh -fX <user>@<host> <program>
El servidor SSH requiere de la siguiente configuración:
X11Forwarding yes # default en Debian
Recomendable también:
Compression delayed
9) Crear una conexión persistente:
ssh -MNf <user>@<host>
10) Conectar salida de video por SSH:
ssh -t remote_host screen -r
11) Port Knocking!
knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000
Knock para activar servicio SSH y para cerrar.
Ejemplo:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 3000,4000,5000
seq_timeout = 5
command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 5000,4000,3000
seq_timeout = 5
command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
12) Remover una línea de texto:
ssh-keygen -R <the_offending_host>
13) Ejecutar comandos complejos sobre SSH sin comillas de escape:
ssh host -l user $(<cmd.txt)
14) Copiar una base de datos MySQL a un servidor nuevo:
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”
15) Quitar una línea de un archivo de texto, útil para eliminar las alertas: “ssh host key change”
sed -i 8d ~/.ssh/known_hosts
16) Copiar la clave pública de SSH s un servidor que no tiene ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh user@machine “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”
Nos permite acceder a un equipo remoto sin necesidad de la contraseña.
17) Test de velocidad SSH
yes | pv | ssh $host “cat > /dev/null”
Nos muestra en vivo la transferencia, envia la salida a /dev/null
Es necesario contar con pv instalado:
Debian: ‘apt-get install pv’
Fedora: ‘yum install pv’ (‘extras’ repository)
18) Establecer una ventana GNU a la cual es posible reconectarse:
ssh -t user@some.domain.com /usr/bin/screen -xRR
19) Continuar scp para un archivo grande:
rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file
Permite resumir una copia scp mediante rsync.
Requiere rsync en ambos hosts.
rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local -> remote
o
rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote -> local
20) Analizar tráfico ssh remoto mediante wireshark
ssh root@server.com ‘tshark -f “port !22″ -w -’ | wireshark -k -i –
Utilizando tcpdump:
ssh root@example.com tcpdump -w – ‘port !22′ | wireshark -k -i –
21) Abrir una sesión SSH en por tiempo indefinido:
autossh -M50000 -t server.example.com ‘screen -raAd mysession’
Ideal para conexiones inestables o cuando se requiere cambiar de servicio WiFi.
22) Mayor seguridad en la conexión:
ssh -4 -C -c blowfish-cbc
23) Balanceo de ancho de banda:
tar -cj /backup | cstream -t 77k | ssh host ‘tar -xj -C /backup’
Comprime y limita el ancho de banda a 77k bit/s.
24) Transferir la clave pública a través de SSH:
ssh-keygen; ssh-copy-id user@host; ssh user@host
25) Copiar stdin al buffer de tu X11:
ssh user@host cat /path/to/some/file | xclip