#### #### # # # # # # #### #### ###### # # # # # # # # # # #### #### # # 1) Que es ssh? ssh es un servidor alternativo al de rsh/rlogin. Tiene la ventaja de que las comunicaciones van encriptadas y opcionalmente, comprimidas. Con esto se evita la posibilidad de que una persona con una maquina 'escuchando' paquetes de la red ethernet pueda llegar a hacerse con tu password u otra informacion confidencial. Ademas ofrece la opcion de redirigir las conexiones X11 para hacerlas tambien "seguras". Cuando se entra en una sesion via ssh, automaticamente son inicializadas las variables SSH_CLIENT y DISPLAY. Notablemente, donde uno esperaria encontrar la variable DISPLAY con un valor $SSH_CLIENT:0.0 (o similar), lo que aparece es algo similar a :1.0. Esto indica que las conexiones abiertas en ese DISPLAY son seguras (y apareceran en el servidor X11 correcto) NOTA: las conexiones que requieran dgl (IRIS GL) no funcionan si se usa este DISPLAY. Las opciones son similares a las de rsh, con algunas mas: 2) Como se usa? Existen un juego de comandos analogos a los ya existentes: rsh,rlogin -> ssh (remote login) rcp -> scp (remote copy) opciones mas interesantes: -x: Disables X11 forwarding -C: Requests compression of all data (Notese que rcp, scp es mucho mas efectivo a la hora de copiar ficheros/directorios (opcion -r) a otra maquina que todo el proceso de ftp, aparte de que ftp envia el password por la red) 3) Funciona con mi ~/.rhosts? No, ssh utiliza un mecanismo mas seguro, aunque algo mas complicado de poner en marcha (la primera vez, solo) En primer lugar, puedes borrar tu ~/.rhosts A continuacion, ejecuta ssh-keygen: prompt:~> ssh-keygen Initializing random number generator... Generating p: .........++ (distance 130) Generating q: .........................................++ (distance 866) Computing the keys... Testing the keys... Key generation complete. Enter file in which to save the key ($HOME/.ssh/identity): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/foobar/.ssh/identity. Your public key is: 1024 37 1364[...]1012347084105677704399176 foobar@foo.example.com Your public key has been saved in /home/foobar/.ssh/identity.pub El "passphrase" es un password alternativo. (que no tiene por que coincidir con el de login.). Se puede dejar vacio (para comportamiento similar al de .rhosts); si no, en cada conexion sera necesario introducir este password. (Ver de todas formas el apartado "ssh-agent"; por lo general no es recomendable dejar el password vacio) Esto crea un directorio ~/.ssh con tres ficheros: identity, identity.pub, random_seed Ahora, si quieres que en otro host puedas entrar via ssh sin necesidad de password, deberas a~nadir el contenido de este "identity.pub" a un fichero denominado "~/.ssh/authorized_keys" (este fichero es el que es analogo al .rhosts) En los casos de HOME compartido entre varias maquinas, la identidad tambien es compartida. Nota: en los casos en los que se usa SSH2 (p.e. OpenSSH) la clave puede ser de otros tipos, como p.e. RSA y DSA. La forma de generar esas claves es: # clave "tradicional RSA de SSH1" ssh-keygen -t rsa1 # clave DSA ssh-keygen -t dsa # clave RSA ssh-keygen -t rsa Con esto se generan 6 ficheros en ~/.ssh id_dsa id_rsa.pub id_dsa.pub identity id_rsa identity.pub Luego, para dar acceso, bastara con a~nadir los i*pub al fichero ~/.ssh/authorized_keys. Debido a que ciertas implementaciones de OpenSSH utilizan para SSH2 el fichero authorized_keys2, puede ser conveniente realizar un enlace tal que asi: cd ~/.ssh ln -s authorized_keys authorized_keys2 4) Donde se puede usar? Es necesario tener instalado un cliente. (ver mas abajo) El servidor remoto debe tener corriendo sshd. Por lo general, estos aparecen listados con el comando awk '{print $1}' /etc/ssh_known_hosts aunque esto no necesariamente incluye todos. (en cualquier caso, si ssh no consigue contactar con sshd, lo intenta con el rshd standard) Si estas en una maquina que no tiene corriendo sshd, puedes compilarlo y ejecutarlo en un puerto no privilegiado (ver paginas de manual) Existen clientes ssh de dominio publico para Macintosh y para Windows; ambos disponibles en el servidor Jueves. Mac OS X: Ya incluido en el sistema Mac: http://andrew2.andrew.cmu.edu/dist/niftytelnet.html http://www.cstone.net/~rbraun/mac/telnet/ http://www.lysator.liu.se/~jonasw/freeware/niftyssh/ Windows: http://www.chiark.greenend.org.uk/~sgtatham/putty/ http://lwn.net/980205/winssh.html ftp://ftp.net.lut.ac.uk/martin/ssh-win32/ Otros: http://www.employees.org/~satch/ssh/faq/ssh-faq-2.html#ss2.2.4 5) ssh-agent El dejar la identidad sin password tiene el peligro de que cualquiera que se haga con el fichero ~/.ssh/identity puede hacerse pasar por nosotros, de la otra forma necesita tambien conocer el password. Se puede seguir teniendo comportamiento similar al de .rhosts aun usando identidad con passwords; para ello se usa el comando ssh-agent, con lo que el password de la identidad se pide una sola vez al comienzo de la sesion. Este comportamiento se ha integrado, por ahora, en el manejo de sesiones graficas en IRIX y en CDE en Solaris. del DIIS. Para usarlo solo debes hacer un "touch ~/.ssh/.ssh-add" En distribuciones recientes de Linux tambien es comun que ssh-agent sea ejecutado por el gestor de sesiones. De esta forma, al entrar en sesion, todos los procesos ssh que se lancen usaran esta autentificacion; si p.e. queremos entrar a un host remoto sin password, en ese host remoto tendremos que haber a~nadido nuestra identidad publica al fichero ~/.ssh/authorized_keys.