Skip to main content

Acerca de las autoridades de certificación de SSH

Con una autoridad de certificación de SSH, tu cuenta de empresa u organización puede ofrecer certificados SSH que los miembros pueden usar para aceder a tus recursos con Git.

Acerca de las autoridades de certificación de SSH

Un certificado SSH es un mecanismo para que una clave SSH firme otra clave SSH. Si usas una autoridad de certificación de SSH (CA) para ofrecerle a los miembros de tu organización certificados SSH firmados, puedes agregar la CA a tu cuenta de empresa u organización para permitirle a los miembros de la organización usar sus certificados para acceder a los recursos de la organización.

Nota: Para utilizar entidades de certificación de SSH, la organización debe usar GitHub Enterprise Cloud. Para más información sobre cómo probar GitHub Enterprise Cloud de forma gratuita, vea "Configuración de una versión de prueba de GitHub Enterprise Cloud".

Una vez que agregas una CA de SSH a tu cuenta de empresa u organización, puedes usar la CA para firmar certificados de SSH de clientes para los miembros de la organización. Los miembros de la organización pueden usar los certificados firmados para acceder a los repositorios de tu organización (y solo los repositorios de tu organización) con Git. Opcionalmente, puedes requerir que los miembros utilicen certificados SSH para acceder a los recursos de la organización. Para obtener más información, vea «Administrar las autoridades de certificación SSH de tu organización» y «Requerir las políticas para los ajustes de seguridad en tu empresa».

Por ejemplo, puedes crear un sistema interno que emita un nuevo certificado para tus programadores cada mañana. Cada programador puede usar su certificado diario para trabajar en los repositorios de tu organización en GitHub Enterprise Cloud. Al finalizar el día, el certificado puede expirar automáticamente, protegiendo tus repositorios si el certificado más tarde se ve comprometido.

Los miembros de la organización pueden usar sus certificados firmados para la autenticación, incluso si has aplicado el inicio de sesión único (SSO) de SAML, sin necesidad de autorizar los certificados firmados.

A menos que hagas que los certificados SSH sean un requisito, los miembros de la organización pueden seguir usando otros medios para la autenticación para acceder a los recursos de tu organización con Git, incluyendo sus nombre de usuario y contraseña, personal access token y sus propias claves SSH.

Los miembros no podrán utilizar sus certificados para acceder a las bifurcaciones de tus repositorios que pertenezcan a sus cuentas personales.

Acerca de las URL SSH con certificados SSH

Si tu organización requiere certificados SSH, para prevenir los errores de autenticación, los miembros de la organización deberán utilizar una URL especial que incluya la ID de organización al realizar operaciones de Git por SSH. La URL especial permite que el cliente y servidor negocien con mayor facilidad qué llave debería utilizarse para la autenticación en la computadora del miembro. Si un miembro usa la URL normal que comienza con git@github.com, el cliente SSH podría ofrecer la clave incorrecta, lo que provocaría un error en la operación.

Cualquiera con acceso de lectura al repositorio puede encontrar esta URL si selecciona el menú desplegable Código en la página principal del repositorio y, después, hace clic en Utilizar SSH.

Si tu organización no requiere certificados SSH, los miembros pueden seguir utilizando sus propias llaves SSH u otros medios de autenticación. En ese caso, funcionará tanto la URL especial como la normal, que comienza con git@github.com.

Emitir certificados

Cuando emites cada certificado, debes incluir una extensión que especifique para qué usuario de GitHub Enterprise Cloud es el certificado. Por ejemplo, puede usar el comando ssh-keygen de OpenSSH y reemplazar KEY-IDENTITY con la identidad de clave y USERNAME con un nombre de usuario de GitHub Enterprise Cloud. El certificado que generes se autorizará para actuar en nombre de ese usuario para cualquiera de los recursos de tu organización. Asegúrate de validar la identidad de los usuarios antes de que emitas el certificado.

Nota: Debes actualizar a OpenSSH 7.6 o una versión posterior para usar estos comandos.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME ./user-key.pub

Advertencia: Después de firmar y emitir un certificado, no se puede revocar. Asegúrese de usar la marca -V a fin de configurar una vigencia para el certificado o este se podría usar de forma indefinida.

Para emitir un certificado para alguien que utilice SSH para acceder a varios productos de GitHub, puedes incluir dos extensiones de inicio de sesión para especificar el nombre de usuario para cada producto. Por ejemplo, el siguiente comando emitirá un certificado para USERNAME-1 de la cuenta de GitHub Enterprise Cloud del usuario, y para USERNAME-2 de la cuenta de GitHub Enterprise Server del usuario en HOSTNAME.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub

Puede restringir las direcciones IP desde las que un miembro de la organización puede acceder a los recursos de la organización mediante una extensión source-address. La extensión acepta una dirección IP específica o una gama de direcciones IP con la notación CIDR. Puedes especificar múltiples direcciones o rangos separando los valores con comas. Para más información, vea "Enrutamiento entre dominios sin clases" en Wikipedia.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub