1.0 - ¿Qué es OpenSSH y dónde lo puedo obtener?
- 1.1 - ¿Qué es OpenSSH?
- 1.2 - ¿Por qué se debe utilizar?
- 1.3 - ¿Para qué sistemas operativos existe soporte?
- 1.4 - ¿Qué ocurre con los derechos de autor, de usuario, y con las patentes?
- 1.5 - ¿Dónde puedo pedir ayuda?
2.0 - Preguntas Comunes
- 2.1 - ¿Por qué ssh/scp realizan conexiones desde puertos de numeración baja?
Mi cortafuegos bloquea esos puertos.- 2.2 - ¿Por qué el programa cliente de ssh se instala como setuid root?
- 2.3 - ¿Por qué hay problemas de interoperabilidad entre SSH 2.3 y OpenSSH 2.1.1?
- 2.4 - ¿Por qué OpenSSH muestra el mensaje: Dispatch protocol error: type 20
- 2.5 - Las versiones antiguas comerciales de SSH cifran las claves anfitrionas (host keys) con IDEA.
- 2.6 - ¿Qué son esos mensajes de aviso sobre el tamaño de la clave?
- 2.7 - X11 y/o el agente de reenvío no funcionan.
- 2.8 - Después de actualizar OpenSSH he perdido el soporte para SSH2.
- 2.9 - sftp/scp falla al conectar, pero ssh funciona bien.
3.0 - Preguntas sobre la versión «portable» de OpenSSH
- 3.1 - Mensajes falsos de autenticación con PAM en los ficheros de registro.
- 3.2 - La autenticación mediante PAM no permite contraseñas vacías.
- 3.3 - ssh(1) tarda mucho en conectar con Linux/glibc 2.1
- 3.4 - Mensajes en los registros (log) de Linux: ´Can´t locate module net-pf-10´.
(no encuentra el módulo net-pf-10)- 3.5 - La autenticación de la contraseña no funciona en Slackware 7.0.
- 3.6 - ´configure´ o sshd(8) se quejan de que falta el soporte para RSA.
- 3.7 - Errores "scp: command not found".
(no encuentra la orden scp)- 3.8 - No puede leer la contraseña
(´Cannot read passphrase´).- 3.9 - Falta configure o hay fallos durante make.
- 3.10 - Al terminar, ssh se queda colgado
- 3.11 - ¿Por qué ssh se queda colgado al terminar?
- 3.12 - Después de actualizar a OpenSSH 3.1, el reenvío de X11 ya no funciona.
OpenSSH es un versión LIBRE del grupo de herramientas de conexión para redes de SSH, en el cual está depositando su confianza como herramienta de Internet un grupo de usuarios cada vez mayor. Muchos ususarios de telnet, rlogin, ftp, y otros programas parecidos, no son conscientes de que sus contraseñas están siendo transmitidas en claro (sin cifrar) a través de Internet, pero así es. OpenSSH cifra todo el tráfico, incluídas las contraseñas, con el fin de eliminar de un modo efectivo las posibles «escuchas», los secuestros de conexiones y otros ataques a nivel de red.
OpenSSH incluye el programa ssh(1), que sustituye a rlogin y telnet, y el programa scp(1), que sustituye a rcp(1) y a ftp(1). Recientemente, también han sido añadidos a OpenSSH los programas sftp(1) y sftp-server(8), que implementan una solución más sencilla para la transferencia de archivos, substituyendo a ftp(1) y a ftpd(8) respectivamente. Éstos se basan en el borrador secsh-filexfer de la IETF.
OpenSSH se compone de varios programas.
OpenSSH es un conjunto de herramientas que le ayudan a asegurar sus conexiones de red. Aquí tiene una lista de funcionalidades:
En la actualidad, casi todas las comunicaciones llevadas a cabo por computadoras (ordenadores) en red, se llevan a cabo sin cifrar. Como consecuencia, cualquier persona que tenga acceso a cualquier máquina que esté conectada a dicha red puede escuchar, y por tanto espiar, cualquier comunicación. Y esto es lo que hacen los llamados "hackers", los administradores curiosos, los jefes de empresas, los criminales, los espías industriales, y los gobiernos. Algunas redes tienen escapes de radiación electromagnética suficiente como para que los datos se puedan capturar incluso a distancia.
Cuando ingresa en un sistema ("log in"), su contraseña se transmite por la red en un formato de texto claro. Gracias a esto cualquiera que se encuentre «a la escucha» puede usar su cuenta en el sistema para hacer cualquier cosa que desee. Existe constancia de muchos incidentes en todo el mundo en los que "crackers" (conocidos con el término incorrecto de "hackers", o hackers maliciosos) han iniciado programas en estaciones de trabajo sin el conocimiento de sus propietarios, simplemente para escuchar por la red y recolectar contraseñas. En Internet existen muchos programas disponibles para hacer esto, y un programador competente puede programar uno de ellos en pocas horas.
Las empresas tienen secretos comerciales, aplicaciones de patentes en preparación, información sobre precios, información sobre subcontratas, datos de clientes, datos sobre personal, información contable y financiera, y un largo etcétera. Hoy en día cualquiera que pueda acceder a la red (cualquier máquina dentro de la red) puede escuchar cualquier cosa que se transmita por ella, sin que las restricciones normales de acceso constituyan ningún impedimento.
Muchas compañías desconocen el hecho de que la información se puede recuperar fácilmente desde la misma red. Confían en que sus datos se encuentran a salvo ya que presuponen que nadie sabe que existe información confidencial en la red, o simplemente porque hay muchos otros datos que están siendo transferidos por esa misma red. Ésta no es un política segura.
Aunque el desarrollo de OpenSSH se lleva a cabo en OpenBSD, existe una amplia variedad de portes de estas aplicaciones para otros sistemas operativos. El desarrollo de la versión «portable» de OpenSSH está encabezado por Damien Miller. Si quiere echar un rápido vistazo a la versión portable de OpenSSH, mire en http://www.openssh.com/es/portable.html. Lo que sigue a continuación es un breve listado de los sistemas operativos para los que existe soporte:
También puede ver una lista de productos que incluyen OpenSSH en su distribución en www.openssh.com/es/users.html.
Los desarrolladores de OpenSSH se han esforzado en mantener OpenSSH libre de cualquier injerencia en patentes o derechos de autor. Para ello han debido eliminar algunas opciones de OpenSSH. Para ser más concretos, se ha eliminado el soporte de algoritmos patentados.
OpenSSH no contiene soporte para ningún algoritmo de transporte patentado. En modo SSH1 sólo están disponibles las opciones de 3DES y Blowfish. En modo SSH2 sólo se pueden seleccionar las opciones de 3DES, Blowfish, CAST128, Arcfour y AES. No hay soporte para el algoritmo patentado IDEA.
OpenSSH tiene soporte para sendos protocolos SSH1 y SSH2.
Desde que caducara la patente sobre RSA, no existen restricciones en la utilización de programas que usen el algoritmo RSA, incluído el sistema operativo OpenBSD.
Existen muchos sitios en los que puede obtener ayuda. Además del sitio principal de OpenSSH en Internet, http://www.openssh.com, existen muchas listas de distribución por correo electrónico. Pero antes de probar cualquiera de las listas, por favor busque entre los mensajes archivados de estas listas para comprobar si su pregunta ya has sido contestada en alguna ocasión anterior. La lista de lista de correo de OpenSSH dispone de un archivo y de una herramienta de búsqueda que puede encontrar en theaimsgroup.com.
Para más información sobre la subscripción a listas de correo relacionadas con OpenSSH, consulte www.openssh.com/es/list.html.
El cliente de OpenSSH usa puertos de baja numeración para autenticación de rhosts y rhosts-rsa debido a que el servidor necesita confiar en el nombre de usuario provisto por el cliente. Para evitar esto, puede añadir el ejemplo que sigue a su fichero ssh_config o ~/.ssh/config.
UsePrivilegedPort no
O puede especificar esta opción en la línea de órdenes, usando la opción -o con la orden ssh(1).
$ ssh -o "UsePrivilegedPort no" host.com
En relación con la pregunta anterior (2.1), OpenSSH necesita la autoridad del superusuario, root, para enlazar con puertos de numeración baja para poder facilitar la autenticación de rhosts. También se requiere un puerto con privilegios para la autenticación de rhosts-rsa con versiones de SSH más antiguas.
Además, tanto para la autenticación rhosts-rsa (en la versión 1 del protocolo) como para la autenticación basada en host (en la versión 2 del protocolo), el programa cliente de ssh necesita poder acceder a la clave privada del host para autenticar la máquina cliente ante el servidor. Por tanto, también es necesario el bit setuid root para estos métodos de autenticación.
Si no quiere usar estos métodos de autenticación puede eliminar el bit setuid del ejecutable de ssh sin peligro.
SSH 2.3 y las versiones anteriores contenían un error de diseño en su implementación de HMAC. Su código no pasaba todo el bloque de datos de la salida del resumen, y en su lugar siempre ofrecía 128 bits. Esto hacía que SSH 2.3 no pudiera interoperar con OpenSSH cuando los resúmenes eran más grandes.
OpenSSH 2.2.0 detecta este error de diseño en SSH 2.3. En el futuro, las próximas versiones de SSH tendrán este error solucionado. También puede añadir lo siguiente al fichero de configuración sshd2_config de ssh 2.3:
Mac hmac-md5
Se han detectado problemas de interoperabilidad debidos a que las versiones antiguas de OpenSSH no disponían de soporte para rehacer las claves de sesión. Sin embargo, la versión comercial 2.3 de SSH intenta negociar esta funcionalidad, y es probable que en este caso experimente congelaciones o que vea el mensaje de error "Dispatch protocol error: type 20 ". Para solucionar este problema, actualice OpenSSH a una versión reciente o desactive "rekeying" añadiendo lo siguiente a los ficheros ssh2_config o sshd2_config de la versión comercial 2.3 de SSH.
RekeyIntervalSeconds 0
Las versiones antiguas de SSH usaban un algortimo patentado para cifrar sus ficheros /etc/ssh/ssh_host_key. Este problema se manifiesta cuando sshd(8) no puede leer su clave anfitriona. Para evitarlo, use la orden que se cita a continuación y así convertir su ssh_host_key para que use 3DES. NOTA: Para esto use el programa ssh-keygen(1) del producto comercial SSH, *NO* el de OpenSSH:
# ssh-keygen -u -f /etc/ssh/ssh_host_key
El programa ssh-keygen(1) de la versión comercial de SSH contenía un error que, en ocasiones, generaba claves públicas de autenticación (RSA o DSA) con su MSB (Most Significant Bit) desactivado. Dichas claves aseguraban ser de tamaño completo, pero en realidad, la mitad de las veces, su tamaño era más pequeño de lo que aseguraban.
Siempre que OpenSSH encuentre una de estas claves, mostrará un mensaje de aviso. Si no desea ver este mensaje, edite sus ficheros known_hosts y substituya el tamaño incorrecto de la clave (que suele ser ´1024´) con el tamaño correcto (que suele ser ´1023´).
Compruebe sus ficheros ssh_config y sshd_config. Los ficheros con la configuración predefinida desactivan el agente de autenticación y el reenvío en X11. Para activarlos, añada esta línea a sshd_confif:
X11Forwarding yes
y añada las siguientes líneas a ssh_config:
ForwardAgent yes
ForwardX11 yes
NOTA: Para los usuarios de Linux Mandrake 7.2. Mandrake modifica la variable de entorno XAUTHORITY en /etc/skel/.bashrc, y por consiguiente la cualquier directorio de usuario de bash. Esta variable la configura OpenSSH, y para cada que funcione cada una de las opciones anteriores debe comentar la línea:
# export XAUTHORITY=$HOME/.Xauthority
Es posible que se produzcan cambios en sshd_config o ssh_config entre versiones. Siempre que cambie de versión de OpenSSH debe comprobar si se ha producido alguno de estos cambios. A partir de la versión 2.3.0 en adelante, debe añadir lo siguiente a sshd_config:
HostKey /etc/ssh_host_dsa_key
HostKey /etc/ssh_host_rsa_key
Es probable que sftp y/o scp fallen en el momento de la conexión si tenemos un fichero de inicio de la shell (.profile, .bashrc, .cshrc,, etc... ) que produzca una salida para sesiones no interactivas. Esta salida confunde al cliente de sftp/scp. Puede verificar si su shell está haciendo esto del modo siguiente:
ssh yourhost /usr/bin/true
Si la orden anterior produce cualquier tipo de salida, deberá modificar el fichero de inicio de su intérprete de órdenes (shell).
La versión portable de OpenSSH generará falsos fallos en la autenticación en cada ingreso, como el siguiente:
"authentication failure; (uid=0) -> root for sshd service"
Estos mensajes se generan debido a que OpenSSH intenta antes que nada determinar si un usuario necesita autenticación para el ingreso (v.g. contraseña vacía). Desafortunadamente PAM registra todos los intentos de autenticación, incluido éste.
Si le molesta demasiado configure PermitEmptyPasswords no en el fichero sshd_config. Esto acallará el mensaje de error, pero a cambio desactivará la posibilidad de ingreso en cuentas que no tengan una contraseña activada. Si Vd usa el fichero de configuración del programa, esta opción viene predeterminada.
Para activar las contraseñas vacías en una versión de OpenSSH compilada con PAM debe añadir el indicador nullok al final del módulo de verificación de la contraseña en el fichero /etc/pam.d/sshd. Por ejemplo:
auth required/lib/security/pam_unix.so shadow nodelay nullok
Además de esto debe configurar PermitEmptyPasswords yes en el fichero sshd_config.
Existe un pequeño problema cuando se usan contraseñas vacías con PAM: PAM permite el uso de cualquier contraseña cuando se autentica una cuenta con una contraseña vacía. Esto desarticula el proceso de comprobación que usa sshd(8) para determinar si una cuenta tiene o no la contraseña activada y permitir el acceso a los usuarios de la cuenta sin importarle la política especificada por PermitEmptyPasswords. Por este motivo se recomienda que no se añada la directiva nullok al fichero de configuración de PAM a menos que realmente desee permitir el uso de contraseñas vacías.
La biblioteca glibc que se incluye en Redhat 6.1 parece tardar mucho en resolver direcciones IPv6 ó IPv4 desde nombres de dominios. Esto se puede «trucar» con la opción de configuración --with-ipv4-default. Esta opción indica a OpenSSH que use sólo la resolución de direcciones IPv4 (la resolución de direcciones IPv6 se puede llevar a cabo especificando la opción -6 en este caso).
El núcleo Linux busca (por medio de modprobe) el protocolo ´family 10´ (IPv6). Para evitarlo puede cargar el módulo del núcleo adecuado e introducir el alias correcto en /etc/modules.conf, o bien desactivar IPv6 en /etc/modules.conf.
Por alguna estúpida razón, /etc/modules.conf también se puede llamar /etc/conf.modules.
En Slackware 7.0 debe enlazar OpenSSH con libcrypt.
LIBS=-lcrypt ./configure [options]
Asegúrese de que las bibliotecas de OpenSSL se han compilado con el soporte para RSA o DSA incluido, bien de modo interno o a través de RSAref.
scp(1) se debe encontrar especificado en el PATH predeterminado, tanto en el cliente como en el servidor. Es probable que deba usar la opción --with-default-path para especificar un camino ("path") personalizado de búsqueda en el servidor. Con esta opción se substituye el camino predeterminado, por lo que deberá especificar todos los directorios actuales en su camino, así como el directorio en donde haya instalado scp. Por ejemplo:
$ ./configure --with-default-path=/bin:/usr/bin:/usr/local/bin:/camino/hasta/scp
Algunos sistemas operativos configuran /dev/tty con modos incorrectos, haciendo que la lectura de contraseñas falle con el siguiente error:
You have no controlling tty. Cannot read passphrase.
La solución está en reconfigurar los permisos en /dev/tty con el modo 0666 e informar sobre el error al distribuidor de su sistema operativo.
Si no existe el fichero configure dentro del archivo tar.gz que se haya bajado, o si make falla dando errores del tipo ´missing separators´, es probable que haya bajado la distribución de OpenSSH para OpenBSD y que esté intentando compilarla en otra plataforma. Por favor, mire la información que encontrará en la página de la versión portable.
OpenSSH puede colgarse al salir del programa. Esto puede ocurrir cuando hay un proceso activo en segundo plano. Se conoce que sucede en Linux y HP-UX. El problema se puede verficar del siguiente modo:
En su lugar, intente lo siguiente:
$ sleep 20 & exit
$ sleep 20 < /dev/null > /dev/null 2>&1 &
Los usuarios de bash pueden evitarlo añadiendo la
línea "shopt -s huponexit" en el
fichero /etc/bashrc o ~/.bashrc. Si esto no
funcionara o si utiliza otro intérprete de órdenes,
consulte la página de manual de éste y busque una
opción para permitir que el intérprete envíe una
señal HUP a los procesos activos cuando acaben.
Cuando se ejecuta
ssh necesita quedarse colgado, porque necesita esperar:
$ ssh host command
command ya no
necesita más entradas.
command ya no
produce más salidas.
command abandone, ya que sshd precisa de
command para pasar el estado de salida a ssh.
A partir de la versión 3.1 de OpenSSH, el servidor de reenvío de X11, ssh, está predeterminado para estar a la escucha en el anfitrión local; mire la opción X11UseLocalhost de sshd para invertirlo al comportamiento anterior si sus clientes de X11 más viejos no funcionan con la configuración predeterminada.
Por lo general, los clientes de X11 que usan X11 R6 deberían funcionar con la configuración predeterminada. Algunos distribuidores, incluido HP, incluyen las bibliotecas de R6 y R6 con los clientes de X11, por lo que algunos clientes funcionarán y otros no. Esto es lo que ocurre con HP-UX 11.X.