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 usa una autoridad de certificación de SSH (CA) para ofrecerle a los miembros de su organización y a los colaboradores externos certificados SSH firmados, puede agregar la CA a su cuenta de empresa u organización para permitirle a estos colaboradores de la organización usar sus certificados para acceder a los recursos de la organización.
Una vez que agrega una CA de SSH a su cuenta de empresa u organización, puede usar la CA para firmar certificados de SSH de clientes para los miembros y colaboradores externos de la organización. Estos colaboradores de la organización pueden utilizar los certificados firmados para acceder a los repositorios de esa organización.
Los certificados agregados a la empresa conceden acceso a todas las organizaciones que pertenecen a su cuenta empresarial. Para más información, consulta Requerir las políticas para los ajustes de seguridad en tu empresa.
Puedes solicitar que los miembros usen certificados SSH para acceder a los recursos de la organización, a menos que el acceso por SSH esté inhabilitado en tu repositorio.
Opcionalmente, puede requerir que los miembros y colaboradores externos utilicen certificados SSH para acceder a los recursos de la organización. Para más información, consulta 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. 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 no pueden usar el certificado para acceder a bifurcaciones de los repositorios de la organización, a menos que la empresa haya permitido que las CA SSH accedan a repositorios propiedad del usuario. Para más información, consulta Acerca de las autoridades de certificación de SSH.
Acerca de las URL SSH con certificados SSH
Si su organización requiere certificados SSH, para prevenir los errores de autenticación, los miembros y colaboradores externos 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 su organización no requiere certificados SSH, los colaboradores 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 es el certificado. Puede hacer referencia al usuario mediante su identificador de inicio de sesión. Por ejemplo, puedes usar el comando ssh-keygen
de OpenSSH y reemplazar KEY-IDENTITY por la identidad de clave y USERNAME por un nombre de usuario de GitHub. 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.
Note
Para usar estos comandos, debes actualizar a OpenSSH 7.6 o una versión posterior.
Para usar login
a fin de identificar al usuario, utilice extension:login
:
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME ./user-key.pub
Warning
Después de firmar y emitir un certificado, no se puede revocar.
Para las CA cargadas en GitHub Enterprise Server versión 3.13 o posterior, necesitará deberá usar la marca -V
para configurar una duración inferior a 366 días para el certificado. En el caso de las CA cargadas antes de la versión 3.13, la marca -V
es opcional y puede crear certificados que sean irrevocables y para siempre.
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, consulta Enrutamiento entre dominios sin clases en Wikipedia.
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub