Archivo de configuración ~/.ssh/config y /etc/ssh/ssh_config Host universo.org User shazam Compression yes # Equivalente a la opción -C PasswordAuthentication no Protocol 2 Host limbo.com User zeus Compression no ForwardAgent yes # Equivalente a la opción -A ForwardX11Trusted yes # Equivalente a la opción -X
Autenticación Los archivos ~/.ssh/known_hosts y /etc/ssh/ssh_known_hosts almacenan las claves públicas de los servidores y nos permiten saber cuando cambian (posiblemente indicando un ataque). Autenticación basada en host: Requiere que coincida el nombre de la PC cliente, nombre de usuario y known_hosts para ese nombre de la PC cliente. Contraseña: El método más conocido, requiere interacción con el usuario y por lo tanto hay muchos casos en los que no sirve.
Autenticación Claves asimétricas Se crea el par usando ssh-keygen El archivo ~/.ssh/id_rsa contiene la clave privada, debe ser secreta. El archivo ~/.sshid_rsa.pub contiene la clave pública que hay que copiar a cada servidor en ~/.ssh/authorized_keys al que se desee entrar con este método. Lo único que nos va a pedir es la passphrase para desencriptar la clave privada, que puede estar vacía para no requerir interacción a cambio de perder algo de seguridad.
Agente de autenticación ssh-agent guarda la clave privada pidiendo una única vez el passphrase Permite autenticarse a través de servidores no confiables sin comprometer la clave privada. En Debian y derivados ssh-agent es iniciadio por el dm (xdm, gdm, kdm). Para agregar las claves de los archivos ~/.ssh/id_rsa, ~/.ssh/id_dsa y ~/.ssh/identity se usa el comando: $ ssh-add El forwarding se activa con la opción -A o desde el archivo de configuración.
Contraseñas de uso único Autenticación Contraseñas de uso único Útiles para conectarse desde una computadora en la que no se confía (cybercafé, la PC de la suegra, etc). # aptitude install opie-server # vim /etc/pam.d/common-auth #auth required pam_unix.so nullok_secure auth sufficient pam_unix.so nullok_secure auth sufficient pam_opie.so auth required pam_deny.so # vim /etc/ssh/sshd_config ChallengeResponseAuthentication yes # /etc/init.d/ssh restart $ opiepasswd -c -f # Genera las claves, el passphrase es necesario para ver las claves, devuelve el próximo OTP $ opiekey -n 20 <número de secuencia> <semilla> # Usarlo para ver los siguientes OTP
Usos - Shell screen Atajos de teclado: ^a ? -- Lista de atajos ^a c -- Crear nueva ventana ^a <#> -- Ir a ventana # ^a d -- Desprenderse (normalmente seguido de logout) $ screen -list Ejemplo: There are screens on: 14555.tty2.arrakis (09/11/08 14:15:36) (Detached) 13355.pts-0.arrakis (09/11/08 12:10:15) (Attached) 2 Sockets in /var/run/screen/S-angasule. $ screen -r [-d] [[pid.]tty.host] Ejemplos: screen -r 14555.tty2.arrakis screen -r -d 13355.pts-0.arrakis
Usos - Administración de archivos SCP Sólo permite copiar archivos. SFTP Más eficiente que fish, pero requiere un servidor apropiado. FISH Permite todas las operaciones pero es menos eficiente que sftp. SSHFS Similar a fish, pero requiere soporte en el kernel para FUSE en vez de en la aplicación o librería (KIO slaves, GnomeVFs, GVFS).
Túneles SOCKS y puertos Un servidor socks (SOCKS host) en localhost:<puerto> (debe configurarse al navegador para que lo use): $ ssh -N -D <puerto> <mi servidor casero> Un puerto local a un puerto remoto en un IP remoto: $ ssh -N -L <puerto local>:<ip remoto>:<puerto remoto> La opción -N le indica a SSH que no debe ejecutar un comando, no es necesario.
Con devices en /dev/tunX Túneles Con devices en /dev/tunX OpenSSH 4.3 es necesario para esto. Primero hay que activar IP forwarding: # echo 1 > /proc/sys/net/ipv4/ip_forward # vim /etc/ssh/sshd_config PermitRootLogin yes PermitTunnel yes # /etc/init.d/ssh restart # ssh <destino> -N -w 0:0 # ifconfig tun0 10.0.0.100 pointopoint 10.0.0.200 # ifconfig tun0 10.0.0.200 pointopoint 10.0.0.100 # route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.200 tun0 # arp -sD 10.0.0.200 eth0 pub Miren acá que se me hace tarde para la reunión :-P : https://help.ubuntu.com/community/SSH_VPN