2012-08-21 12 views
36

Estoy tratando de crear etiquetas firmadas en GitHub usando la línea de comando git. Genere una clave GPG con un nombre de usuario (de muestra) Full Name (skytreader) <[email protected]>. Una vez hecho esto, trato de crear un signed tag. Sin embargo me sale el siguiente error:Generando una clave GPG para el etiquetado git

gpg: skipped "full <[email protected]>": secret key not available 
gpg: signing failed: secret key not available 
error: gpg failed to sign the data 
error: unable to sign the tag 

Me imagino que solo necesito crear otra clave con el nombre de usuario indicado. Pero luego, al ingresar el nombre "completo", gpg se queja de que mi nombre debe tener al menos 5 caracteres.

¿Cómo uso esta clave con git?

¿Cambio el nombre de usuario que git usa para firmar mis etiquetas con GPG para que tenga un nombre real de al menos 5 caracteres de largo?

Respuesta

14

El nombre del confirmador se encuentra en el archivo ~/.gitconfig. Cambie esa entrada a un nombre real (que es la forma en que desea comprometerse, de todos modos). Puede editar el archivo en su editor favorito, o simplemente cuestión:

git config --global user.name "<name>" 
+0

Una más. ¿Es posible incluir la parte "(skytreader)" en mi gitconfig (para que no tenga que generar otra clave GPG)? – skytreader

+6

Puede ser lo que quieras. De hecho, puede usar los indicadores '-u' o' -local-user' para especificar un '' específico (también se puede establecer globalmente con 'git config --global user.signingkey '. – Christopher

35

primer lugar es necesario comprobar si hay una clave GPG para su identificación.

$ gpg --list-key 

Si usted tiene debería aparecer algo como esto:

  1. pub 2048R/6AB3587A 2013-05-23
  2. uid xxx (gpg for xxx)
  3. sub 2048R/64CB327A 2013-05-23

Si no hay una clave GPG. Debe crear

$ gpg --gen-key 

A continuación tienes esta salida:

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:

  1. (1) RSA and RSA (default)
  2. (2) DSA and Elgamal
  3. (3) DSA (sign only)
  4. (4) RSA (sign only)

Your selection? RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.

  0 = key does not expire 
     <n> = key expires in n days 
     <n>w = key expires in n weeks 
     <n>m = key expires in n months 
     <n>y = key expires in n years 

Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key. 

Real name: xxx 
Email address: [email protected] 
Comment: gpg for xxx 

You selected this USER-ID: 
    "xxx(gpg for xxx) <[email protected]>" 

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 
You need a Passphrase to protect your secret key. 

can't connect to `/xxx/.gnupg/S.gpg-agent': No such file or directory 
We need to generate a lot of random bytes. It is a good idea to perform 
some other action (type on the keyboard, move the mouse, utilize the 
disks) during the prime generation; this gives the random number 
generator a better chance to gain enough entropy. 
+0

Me fui el campo de comentarios en blanco para que esto funcione para mí, ya que no tenía esa coincidencia en mi gitconfig. –

8

Si usted tiene una clave ya generado, se puede decir git a utilizar esa clave específica sin tener que preocuparse sobre la correspondencia entre su ID de usuario git (nombre + correo electrónico) y la ID de la llave GPG. Sin embargo, debe tener su git user.email para que coincida con uno de los correos electrónicos en su clave GPG para sus etiquetas firmadas o se comprometa a ser útil para otros usuarios.

Para establecer la clave para un uso global en su ordenador, establecer su git config global con:

git config --global user.signingkey 6AB3587A 

O bien, se puede establecer el user.signingkey sólo para el repositorio actual que está en con:

git config user.signingkey 6AB3587A 
+0

prefiero 'git config --local user.signingkey 6AB3587A' ya que si está en una computadora/servidor público. – dotslash

Cuestiones relacionadas