mac keys deploy create github ssh-keys

keys - github use ssh key



github deploy keys: cómo autorizo más de un repositorio para una sola máquina (8)

Administrar varias claves de implementación de GitHub puede ser más fácil con mi pequeño módulo github-add-key . Utiliza el enfoque descrito en this gran respuesta, y todo lo que necesita es

$ github-add-key rob / chong

en su rob/chong clonado localmente y siga el proceso automatizado simple.

Entonces, tengo un host, llámalo rob . Utilicé ssh-keygen en rob para obtener una clave pública, la cual di a github en el add a new deploy key screen para repositorio cheech . Ahora quiero desplegar chong on rob también. Pero si voy a la pantalla agregar nueva clave de implementación para repositorio chong en github, y pego en la clave pública que generé en rob , dice key already in use . Pensé que, si la llave estaba en uso, podría clonar chong en rob pero eso rob que se negó el permiso.

Así que, claramente, esto es más complicado de lo que pensaba y se trata de tener varias claves o algo así. ¿Qué debería hacer para clonar chong en rob ?

Gracias por tu ayuda.


La solución más simple que encontré fue resumida here .

1) Ingrese este comando (Lo hará para la cantidad de claves que necesite):

ssh-keygen -t rsa -C "[email protected]"

2) Cuando se le solicite con la siguiente declaración, escriba un nombre único (es decir, foo1_rsa). El archivo se creará en su directorio actual y es posible que deba moverlo a .ssh si quiere que esté ordenado:

Ingrese el archivo para guardar la clave (/Users/you/.ssh/id_rsa): [Presione enter]

3) Actualice su archivo de configuración SSH:

vi ~ / .ssh / config

Que puede estar vacío:

Host cheech github.com Hostname github.com IdentityFile ~/.ssh/foo1_rsa Host chong github.com Hostname github.com IdentityFile ~/.ssh/foo2_rsa


Si bien la idea de Pimkin fue genial, no quería instalar un node solo para esto, así que creé algo similar en bash :

https://gist.github.com/blvz/8eeebacae11011c25fc79eff12f49ae9

Instalar y usar:

curl https://gist.githubusercontent.com/blvz/8eeebacae11011c25fc79eff12f49ae9/raw/6f2f7f3709a0fe852d8a3a5bb125325e3ffbc7d8/gh-deploy-clone.sh > /usr/local/bin/gh-deploy-clone chmod +x /usr/local/bin/gh-deploy-clone gh-deploy-clone user/repo # You can also give it a name, in case # you have multiple deploy targets: gh-deploy-clone user/repo staging


Si se siente cómodo dando acceso rob a todos los repositorios privados en su cuenta de GitHub, puede eliminar la clave como una clave de implementación de cheech y luego agregarla como una clave SSH a su cuenta de GitHub en su conjunto. Esto daría acceso rob para cheech y chong .

Esto no funcionará si tiene otros repositorios en su cuenta a los que no desea acceder.

Si necesita un control más preciso, deberá generar claves adicionales en rob y asignarlas como teclas de despliegue a repositorios específicos.


También puede crear un contenedor ssh y pasarlo como GIT_SSH . Esta opción tiene la ventaja de que no tiene que cambiar el control remoto de git. https://.com/a/14221028/3461



Una vez que se ha adjuntado una clave a un repositorio como una clave de implementación, no se puede usar en otro repositorio. Si se encuentra con este error al configurar las teclas de implementación, deberá modificar su control remoto y configurar su archivo ~/.ssh/config para usar un nombre de host github.com inexistente que ssh podrá use para elegir la clave de despliegue ssh correcta para su repositorio.

# first we remove the origin $ git remote -v origin [email protected]:username/foo.git (fetch) origin [email protected]:username/foo.git (push) $ git remote rm origin # here we add a new origin using a host nickname called # foo.github.com that we will reference with a Host stanza in our # ~/.ssh/config to specify which key to use with which fake hostname. $ git remote add origin [email protected]:username/foo.git $ git remote -v origin [email protected]:username/foo.git (fetch) origin [email protected]:username/foo.git (push)

Genere la clave de implementación para su repositorio y asígnele un nombre algo razonable como:

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa-foo -C https://github.com/username/foo Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/username/.ssh/id_rsa-foo. Your public key has been saved in /home/username/.ssh/id_rsa-foo.pub. The key fingerprint is: c0:ff:ee:34:24:11:5e:6d:7c:4c:b1:a0:de:ad:be:ef https://github.com/username/foo The key''s randomart image is: +--[ RSA 2048]----+ | E o..o.oo. | | M o o o .+CoW | | + o = o. .. | | . . + | | S | | o . | | + | | . o | | ..o. | +-----------------+

Una vez que haya agregado la clave de implementación , deberá agregar la siguiente estrofa a su archivo ~/.ssh/config :

Host fake-hostname-foo.github.com Hostname github.com IdentityFile ~/.ssh/id_rsa-foo

Ahora puedes probarlo con:

$ ssh -T [email protected] Hi username! You''ve successfully authenticated, but GitHub does not provide shell access.


Sé que esto tiene más de 5 años pero no hay una respuesta aceptada a esta pregunta tan popular, así que esto es lo que considero la mejor manera de considerar la limpieza y la legibilidad futura:

AGREGAR UN USUARIO DE DESPLIEGUE A TU EQUIPO

Paso 1: cree una nueva dirección de correo electrónico en el dominio de su organización para un nuevo usuario de implementación . Algo como [email protected] .

Paso 2: Use ese buzón para crear una nueva cuenta de GitHub ( GitHub llama a estos "usuarios de la máquina" ) y asígnele un nombre de usuario como deploy-ExampleOrganisation, por lo que su función es clara.

Paso 3 : crea un usuario en tu servidor llamado "implementar" con un comando como este:

useradd -d /home/deploy -m deploy

Genere una clave SSH para deploy @ servername , especificando no contraseña y /home/deploy/.ssh/id_rsa como la ubicación del archivo:

ssh-keygen -t rsa -b 4096 -C "deploy@servername"

Agregue el contenido de /home/deploy/.ssh/id_rsa.pub como clave SSH en su nueva cuenta deploy-ExampleOrganisation GitHub: Vaya a Configuración> Claves SSH y GPG> Nueva clave SSH .

Paso 4: cree un equipo en su organización llamado "Despliegue de usuarios de solo lectura" , agregue su nuevo usuario al equipo y otorgue al equipo acceso de lectura a cualquier repos que se implemente. (Si no tiene una cuenta de organización, aún puede darle acceso a este usuario a múltiples repositorios privados)

Paso 5: Agregue la clave SSH de su máquina personal para implementar el archivo de claves autorizadas del usuario (/home/deploy/.ssh/authorized_keys) para que usted (o su script de implementación) pueda iniciar sesión como implementación al implementar el código.

¡Auge! Eso es todo ... Ahora tiene un flujo limpio y autodocumentado.

PD. Probé la respuesta altamente aclamada de aculich, pero me pareció una molestia jugar con los nombres de host falsos y pensé, si vuelvo a esto en un años voy a averiguar fácilmente qué hice para crear todas las claves y entender cómo ese archivo de configuración SSH hace que funcionen esas divertidas direcciones remotas inexistentes? ¡Probablemente no!

Ventajas de implementar un usuario sobre el método falso de nombres de host:

  • ¡No hacks! Son cuentas de usuario estándar con nombres claros, que acceden a los repos a través de nombres de host reales.
  • Menos llaves flotando alrededor.
  • Si / cuando te mueves a servidores adicionales, es fácil darle a tu usuario de Implementación una cuenta en todos ellos y con solo agregar una nueva clave a su cuenta de GitHub, su cuenta en el nuevo servidor está lista para implementar el código.
  • El usuario de implementación solo tiene acceso de bajo privilegio de solo lectura para los repos listados en el equipo y sus claves SSH personales se mantienen fuera del servidor, por lo que si alguna persona desagradable obtiene acceso a su servidor no pueden causar estragos en todos sus repositorios. también.
  • Implementar archivos de configuración de herramientas (por ejemplo, Capistrano) no se ensucie conteniendo esos confusos nombres de host falsos. (Fue cuando comenzaron a propagarse más allá del servidor que realmente me sentí incómodo con ese método).
  • Si olvida cómo demonios hizo esto en años, la propiedad del archivo lo llevará al usuario del despliegue ls -la , la clave SSH lo llevará al nombre de la cuenta de GitHub ssh -T [email protected] y con suerte entonces usted " volver a estar completamente a la velocidad otra vez.
  • Y finalmente ... es el método recomendado por GitHub.