miércoles, 12 de septiembre de 2012

SSH práctico

A modo de recordatorio dejo unas notas sobre OpenSSH.

Problema:Conexión "automática" a servidores corriendo OpenSSH en distintos puertos con diferentes usuarios,configuraciones y llaves.

Consejo: Edita el fichero ~/ssh/config tal y como se indica en este ejemplo:


 Host dama
    User powerslave
    Port 666
    Hostname iron.maiden.com



Host blind
    User ozzy
    Port 1024
    Hostname crazy.train.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/ozzy_rsa


En la práctica: 


ssh dama


Establecerá una conexión SSH al host iron.maiden. com en el puerto TCP 666


ssh blind


Establecerá una conexión SSH al host crazy.train.com en el puerto TCP 1024 usando la llave almacenada en ~/.ssh/ozzy_rsa

Problema:Ejecutar comandos en un servidor remoto.

Consejo: Recomiendo incluir el host en fichero  ~/ssh/config

Ejemplo: 

apermuy@vpn:~$ ssh apermuy@vps 'cat /proc/cpuinfo|grep model'
model           : 6
model name      : QEMU Virtual CPU version 0.9.1


Problema: Al intentar conectarnos a un servidor remoto recibimos el mensaje "WARNING: POSSIBLE DNS SPOOFING DETECTED!  " y/o "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! "

Consejo:  Como indica el propio mensaje "Alguien está haciendo algo malo...". Revisa tus llaves RSA/DSA, logs, accesos....

Ejemplo:


ssh-keygen -R vps.algunhost.org


Problema: Backup directorio con tar sobre ssh.
Consejo: No uses la opción verbose( -v). Incluye siempre que sea posible el host en el fichero  ~/ssh/config

 Ejemplo: Este ejemplo envía el contenido del directorio /tmp al server definido en ~/ssh/config y, lo empaqueta en tar y lo comprime con gzip.

 tar zcf - /tmp | ssh apermuy@vps "cat > tmp.tgz"



 Problema: No solicitar que se verifique un host desconocido. 

root@vpn:/home/apermuy# ssh apermuy@vps
The authenticity of host 'vps.algunhost.org (111.111.222.333)' can't be established.
RSA key fingerprint is 2b:11:13:49:11:f9:72:71:28:67:51:2f:d7:2a:5d:6d.
Are you sure you want to continue connecting (yes/no)?


Ejemplo: 

 UserKnownHostsFile /dev/null
 StrictHostKeyChecking no 

Problema: Compactar con tar al vuelo vía ssh hacia un host remoto.

Ejemplo:

 tar zcf - /home/apermuy | ssh apermuy@111.222.333.444 "cat > /tmp/test.tar.gz"