Intento trabajar en mis repositorios reales de "trabajo" y en mis repositorios personales en git hub desde mi computadora.
La cuenta de trabajo se configuró primero y todo funciona a la perfección.
Sin embargo, mi cuenta personal no parece empujar a mi repositorio personal, que está configurado bajo una cuenta / correo electrónico diferente.
Intenté copiar mi clave de trabajo en mi cuenta personal, pero eso arroja un error, porque, por supuesto, una clave solo se puede adjuntar a una cuenta.
¿Cómo puedo empujar / tirar hacia y desde ambas cuentas, desde sus respectivas credenciales de github?
git
version-control
github
Kevin Whitaker
fuente
fuente
ssh-add ~/.ssh/id_rsa_COMPANY
<br/> para decirle al agente ssh que lo incluya para su uso. <hr /> Rest funciona bien para mí con el tutorial mencionado anteriormente.Respuestas:
Todo lo que necesita hacer es configurar su configuración SSH con múltiples pares de claves SSH.
Este enlace es fácil de seguir (Gracias Eric): http://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net-22574
Generación de claves SSH (Win / msysgit) https://help.github.com/articles/generating-an-ssh-key/
Además, si está trabajando con múltiples repositorios utilizando diferentes personas, debe asegurarse de que sus repositorios individuales tengan la configuración del usuario anulada en consecuencia:
Configuración de nombre de usuario, correo electrónico y token GitHub: anulación de la configuración para repositorios individuales https://help.github.com/articles/setting-your-commit-email-address-in-git/
Espero que esto ayude.
Nota: Algunos de ustedes pueden requerir que se utilicen diferentes correos electrónicos para diferentes repositorios, desde git 2.13 puede configurar el correo electrónico en un directorio editando el archivo de configuración global que se encuentra en:
~/.gitconfig
usando condicionales de esta manera:Y luego su configuración específica de trabajo ~ / work / .gitconfig se vería así:
Gracias @alexg por informarme de esto en los comentarios.
fuente
Use HTTPS:
cambie la URL remota a https:
y eres bueno para ir:
Para garantizar que las confirmaciones aparezcan tal como las realiza USERNAME, también se pueden configurar user.name y user.email para este proyecto:
fuente
user.name
yuser.email
con la--global
bandera, simplemente haga lo que dice arriba para configurarlo localmente para ese único repositorio. Eso resolvió muchos problemas. Ahora para eliminar el antiguo repositorio ...Ponerse en forma
Para administrar un repositorio git en una cuenta github / bitbucket / lo que sea, simplemente necesita generar una nueva clave SSH.
Pero antes de que podamos comenzar a empujar / tirar repositorios con su segunda identidad, debemos ponerlo en forma: supongamos que su sistema está configurado con un par típico
id_rsa
yid_rsa.pub
clave. Ahora tutree ~/.ssh
aspecto es asíPrimero, nombre ese par de claves: agregar un nombre descriptivo lo ayudará a recordar qué clave se utiliza para qué usuario / control remoto
A continuación, generemos un nuevo par de claves : aquí nombraré la nueva clave
github-otheruser
Ahora, cuando miramos
tree ~/.ssh
vemosA continuación, necesitamos configurar un
~/.ssh/config
archivo que definirá nuestras configuraciones clave. Lo crearemos con los permisos adecuados de solo lectura / escritura del propietarioÁbrelo con tu editor favorito y agrega los siguientes contenidos
Presumiblemente, tendrá algunos repositorios existentes asociados con su identidad primaria de Github. Por esa razón, el "predeterminado" github.com
Host
está configurado para usar sumainuser
clave. Si no desea favorecer una cuenta sobre otra, le mostraré cómo actualizar repositorios existentes en su sistema para usar una configuración ssh actualizada.Agregue su nueva clave SSH a github
Dirígete a github.com/settings/keys para agregar tu nueva clave pública
Puede obtener los contenidos de la clave pública usando: copiar / pegar en github
Ahora su nueva identidad de usuario está configurada; a continuación le mostraremos cómo usarla.
Hacer cosas: clonar un repositorio
Entonces, ¿cómo se combina esto para trabajar con git y github? Bueno, porque no puedes tener un pollo sin huevo, veremos la clonación de un repositorio existente. Esta situación podría aplicarse a usted si tiene una nueva cuenta de github para su lugar de trabajo y fue agregado a un proyecto de la empresa.
Digamos que
github.com/someorg/somerepo
ya existe y se le agregó: la clonación es tan fácil comoEsa parte en negrita debe coincidir con el
Host
nombre que configuramos en su~/.ssh/config
archivo. Eso conecta correctamente git al correspondienteIdentityFile
y lo autentica adecuadamente con githubHacer las cosas: crear un nuevo repositorio
Bueno, debido a que no puedes tener un pollo y un huevo sin huevo, buscaremos publicar un nuevo repositorio en tu cuenta secundaria. Esta situación se aplica a los usuarios que crean nuevos contenido utilizando su cuenta secundaria de github.
Supongamos que ya ha hecho un poco de trabajo localmente y ahora está listo para empujar a Github. Puedes seguirme si quieres
Ahora configure este repositorio para usar su identidad
Ahora haz tu primer commit
Verifique la confirmación para ver que su nueva identidad se usó usando git log
Muy bien, es hora de empujar a github! Dado que github aún no conoce nuestro nuevo repositorio, primero vaya a github.com/new y cree su nuevo repositorio - asígnele el nombre somerepo
Ahora, para configurar su repositorio para "hablar" con github usando la identidad / credenciales correctas, hemos agregado un control remoto. Suponiendo que su nombre de usuario de github para su nueva cuenta es
someuser
...Esa parte en negrita es absolutamente crítica y debe coincidir con la
Host
que definimos en su~/.ssh/config
archivoPor último, empuja el repositorio
Actualice un repositorio existente para usar una nueva configuración SSH
Digamos que ya tiene algún repositorio clonado, pero ahora desea usar una nueva configuración SSH. En el ejemplo anterior, mantuvimos intactos sus repositorios existentes asignando su par anterior
id_rsa
/id_rsa.pub
clave aHost github.com
su archivo de configuración SSH. No hay nada de malo en esto, pero ahora tengo al menos 5 configuraciones de github y no me gusta pensar en una de ellas como la configuración "predeterminada". Prefiero ser explícito sobre cada una.Antes de tener esto
Así que ahora actualizaremos eso (cambios en negrita )
Pero eso significa que ahora cualquier repositorio existente con un
github.com
control remoto ya no funcionará con este archivo de identidad. Pero no te preocupes, es una solución simple.Para actualizar cualquier repositorio existente para usar su nueva configuración SSH, simplemente abra el archivo de configuración git del repositorio y actualice la url.
Actualice el campo de origen remoto (cambios en negrita )
Eso es. Ahora puedes
push
/pull
a tu gustoPermisos de archivo de clave SSH
Si tiene problemas con las claves públicas que no funcionan correctamente, SSH es bastante estricto con los permisos de archivo permitidos en su
~/.ssh
directorio y los archivos de claves correspondientesComo regla general, cualquier directorio debería serlo
700
y cualquier archivo debería serlo600
, esto significa que son de solo lectura / escritura del propietario, ningún otro grupo / usuario puede leerlos / escribirlosCómo administro mis claves SSH
Administro claves SSH separadas para cada host al que me conecto, de modo que si alguna clave se ve comprometida, no tengo que actualizar las claves en cualquier otro lugar donde haya usado esa clave. Esto es como cuando recibe esa notificación de Adobe de que se robaron 150 millones de la información de sus usuarios, ahora tiene que cancelar esa tarjeta de crédito y actualizar todos los servicios que dependen de ella, lo que es una molestia.
Así
~/.ssh
es como se ve mi directorio: tengo una.pem
clave para cada usuario, en una carpeta para cada dominio al que me conecto. Utilizo.pem
claves para, así que solo necesito un archivo por clave.Y aquí está mi
/.ssh/config
archivo correspondiente : obviamente, las cosas de github son relevantes para responder esta pregunta sobre github, pero esta respuesta tiene como objetivo proporcionarle el conocimiento para administrar sus identidades ssh en cualquier número de servicios / máquinas.Obtener su clave pública SSH de una clave PEM
Arriba notó que solo tengo un archivo para cada clave. Cuando necesito proporcionar una clave pública, simplemente la genero según sea necesario.
Entonces, cuando github solicite su clave pública ssh, ejecute este comando para generar la clave pública en stdout: copie / pegue donde sea necesario
Tenga en cuenta que este es también el mismo proceso que utilizo para agregar mi clave a cualquier máquina remota. El
ssh-rsa AAAA...
valor se copia en el~/.ssh/authorized_keys
archivo del control remoto.Conversión de sus pares de teclas
id_rsa
/id_rsa.pub
a formato PEM¿Entonces quiere domesticar sus archivos clave y reducir algunos problemas del sistema de archivos? Convertir su par de claves en un solo PEM es fácil
O, siguiendo nuestros ejemplos anteriores, cambiamos el nombre
id_rsa -> github-mainuser
yid_rsa.pub -> github-mainuser.pub
, asíAhora, solo para asegurarse de que hemos convertido esto correctamente, querrá verificar que la clave pública generada coincida con su antigua clave pública
Ahora que tiene su
github-mainuser.pem
archivo, puede eliminar de forma segura sus archivos antiguosgithub-mainuser
ygithub-mainuser.pub
, solo es necesario el archivo PEM; solo genera la clave pública cuando la necesites ^ _ ^Crear claves PEM desde cero
No necesita crear el par de claves privada / pública y luego convertir a una sola clave PEM. Puede crear la clave PEM directamente.
Vamos a crear un
newuser.pem
Obtener la clave pública SSH es lo mismo
fuente
git clone github.com-otheruser:someorg/somerepo.git
debe sergit clone [email protected]:someorg/somerepo.git
(agregando elgit@
). Al menos, eso es lo que necesitaba.Host github.com
(nueva línea)User git
(nueva línea)IdentityFile ...
Al crear diferentes alias de host para github.com en su ~ / .ssh / config, y dar a cada alias de host su propia clave ssh, puede usar fácilmente varias cuentas de github sin confusión. Esto se debe a que github.com se distingue no por el usuario, que siempre es solo git, sino por la clave ssh que usó para conectarse. Simplemente configure sus orígenes remotos utilizando sus propios alias de host ".
El resumen anterior es cortesía de los comentarios en la publicación del blog a continuación.
He encontrado esta explicación la más clara. Y funciona para mí, al menos a partir de abril de 2012.
http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/
fuente
$ ssh-add ~/.ssh/id_rsa_COMPANY
: consulte Error: Permiso denegado (clave pública) - Documentación del usuarioLos detalles en http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/ vinculados por mishaba me funcionan muy bien.
De esa página:
Luego edite ese archivo para que sea algo como esto (una entrada por cuenta):
fuente
git clone git@github-COMPANY/repo/name.git
para obtener la clave ssh correcta.git clone https://github-COMPANY/GitUserName/projectname.git
no parece funcionar La clave predeterminada que usa github.com funciona bien.ssh: connect to host github.com port 22: Bad file number fatal: The remote end hung up unexpectedly
. https era la única forma hasta ahora.$ git clone https://github-USER/UserName/test_project_user.git Cloning into test_project_user... error: Couldn't resolve host 'github-USER' while accessing https://github-USER/N UserName/test_project_user.git/info/refs fatal: HTTP request failed
No estoy seguro de si puede estar relacionado con el archivo de configuración o la forma en que estoy tratando de emular su llamada git con https.Abra el archivo de configuración y agregue los siguientes códigos. (cambio de acuerdo a su cuenta)
Cuenta 1
Cuenta 2
Cuenta 3
Agregue la URL remota de la siguiente manera
Cuenta 1
Cuenta 2
Cuenta 3
fuente
PreferredAuthentications publickey
?Uso scripts de shell para cambiarme a la cuenta que quiera que esté "activa". Esencialmente, comienza desde un nuevo comienzo, configura una cuenta correctamente y funciona, luego mueve estos archivos a un nombre con el prefijo adecuado. A partir de entonces, puede usar el comando "github" o "gitxyz" para cambiar:
He tenido mucha suerte con esto. También creé un script de ejecución en Xcode (para ustedes, usuarios de Mac) para que no compilara mi proyecto a menos que tuviera la configuración adecuada (ya que usa git):
Ejecutar script colocado después de dependencias (usando / bin / ksh como shell):
EDITAR: se agregaron pruebas para la existencia de nuevos archivos y se copiaron archivos antiguos a / tmp para abordar los comentarios de @naomik a continuación.
fuente
id_rsa
yid_rsa.pub
se eliminarían, podrían quedar bloqueadas del control remoto.Esta respuesta es para principiantes (no git gurus) . Recientemente tuve este problema y tal vez soy solo yo, pero la mayoría de las respuestas parecían requerir una comprensión bastante avanzada de git. Después de leer varias respuestas de desbordamiento de pila, incluido este hilo, estos son los pasos que necesitaba seguir para cambiar fácilmente entre cuentas de GitHub (por ejemplo, suponga dos cuentas de GitHub, github.com/personal y gitHub.com/work ):
ls -al ~/.ssh
archivos declaves ssh existentescon la extensión
.pub
son sus claves ssh, por lo que debe tener dos para lascuentaspersonal
ywork
. Si solo hay uno o ninguno, es hora de generar otro sabio, omita esto.- Generación de clave ssh : inicie sesión en github (ya sea personal o laboral), navegue a Configuración y copie el correo electrónico asociado.
ahora regrese a la Terminal y ejecute
ssh-keygen -t rsa -C "the copied email"
, verá:Generar pares de claves rsa públicas / privadas.
Ingrese el archivo en el que guardará la clave (/.../.ssh/id_rsa):
id_rsa es el nombre predeterminado para la clave ssh que pronto se generará, así que copie la ruta y cambie el nombre de la predeterminada, p. Ej.
/.../.ssh/id_rsa_work
si se genera por cuenta de trabajo. proporcione una contraseña o simplemente ingrese para ignorar y, leerá algo como La imagen randomart de la clave es: y la imagen. hecho.Repita este paso una vez más para su segunda cuenta de github. Asegúrese de utilizar la dirección de correo electrónico correcta y un nombre de clave ssh diferente (por ejemplo, id_rsa_personal) para evitar sobrescribir.
En esta etapa, debería ver dos teclas ssh cuando
ls -al ~/.ssh
vuelva a ejecutarse .pbcopy < ~/.ssh/id_rsa_work.pub
reemplaceid_rsa_work.pub
con lo que llamó el suyo.Ahora que nuestra llave ssh se copia al portapapeles, volver a la cuenta de GitHub [Asegúrese de que está conectado a la cuenta de trabajo si la clave ssh es que ha copiado
id_rsa_work
] y vaya aConfiguración - SSH y las llaves GPG y haga clic en la tecla New SSH botón (no Nueva clave GPG por cierto: D)
asigne un título para esta clave, pegue la clave y haga clic en Agregar clave SSH. Ahora ha agregado con éxito la clave ssh o notó que ha estado allí todo el tiempo, lo cual está bien (o recibió un error porque seleccionó Nueva clave GPG en lugar deNueva clave SSH : D).
Edite la configuración global de git: el último paso es asegurarse de que el archivo de configuración global conozca todas las cuentas de github (por así decirlo).
Ejecute
git config --global --edit
para editar este archivo global, si esto abre vim y no sabe cómo usarlo, presionei
para ingresar al modo Insertar, edite el archivo como se muestra a continuación y presione esc seguido de:wq
para salir del modo insertar:[inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true
¡Listo! Ahora, cuando intente empujar o extraer de un repositorio, se le preguntará qué cuenta de GitHub debe vincularse con este repositorio y se le preguntará solo una vez, la configuración local recordará este enlace y no la configuración global para que pueda trabajar en diferentes repos que están vinculados con diferentes cuentas sin tener que editar la configuración global cada vez.
fuente
Solución más simple y fácil para evitar confusiones.
Para que los usuarios de Windows utilicen múltiples o diferentes cuentas git para diferentes proyectos.
Siguientes pasos: vaya al Panel de control y busque Credential Manager. Luego vaya al Administrador de credenciales -> Credenciales de Windows
Ahora elimine el nodo git: https // github.com bajo Encabezado de credenciales genéricas
Esto eliminará las credenciales actuales. Ahora puede agregar cualquier proyecto a través de git pull, le pedirá nombre de usuario y contraseña.
Cuando tenga algún problema con otra cuenta, realice el mismo proceso.
Gracias
referirse a la imagen
fuente
acabo de descubrir esto para Windows, usando credenciales para cada repositorio:
El formato de credencial. https://github.com . le dice al ayudante de credenciales la URL de la credencial. El 'useHttpPath' le dice al administrador de credenciales que use la ruta para la credencial. Si se omite useHttpPath, el administrador de credenciales almacenará una credencial para https://github.com . Si está incluido, el administrador de credenciales almacenará múltiples credenciales, que es lo que realmente quería.
fuente
Encontré esta gema muy útil: sshwitch
https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch
Ayuda a cambiar las claves ssh. ¡Recuerde hacer una copia de seguridad de todo primero!
También para asegurarme de que los commits tengan la dirección de correo electrónico correcta asociada con ellos, me aseguré de que el archivo ~ / .gitconfig tuviera la dirección de correo electrónico adecuada.
fuente
Además de crear múltiples claves SSH para varias cuentas, también puede considerar agregar colaboradores en cada proyecto utilizando los mismos correos electrónicos de la cuenta y almacenar la contraseña de forma permanente.
He configurado varias cuentas con diferentes correos electrónicos y luego puse el mismo usuario y correo electrónico en cada cuenta como uno de los colaboradores. De esta manera, puedo acceder a todas las cuentas sin agregar la clave SSH o cambiar a otro nombre de usuario y enviar un correo electrónico para la autenticación.
fuente
El enfoque más sencillo y directo (en mi humilde opinión): no hay archivos de configuración ni demasiadas molestias
Simplemente cree otra clave ssh.
Digamos que tiene una nueva cuenta de trabajo de GitHub, solo cree una nueva clave para ella:
Ahora debería tener el antiguo y el nuevo, para verlos, ejecute:
Necesita ejecutar lo anterior solo una vez.
A partir de ahora, cada vez que desee cambiar entre los dos, simplemente ejecute:
Para cambiar al anterior, vuelva a ejecutar:
fuente
Otra forma más fácil es usar múltiples aplicaciones de escritorio, como lo que estoy haciendo, usar la cuenta A en el escritorio de Github, mientras uso la cuenta B en Github Kraken
fuente
IntelliJ Idea tiene soporte integrado de esa https://www.jetbrains.com/help/idea/github.html#da8d32ae
fuente
En caso de que no desee meterse con el
~/.ssh/config
archivo mencionado aquí, puede ejecutargit config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"
en el repositorio donde desea comprometerse desde una cuenta diferente.El resto de la configuración es la misma:
Cree una nueva clave SSH para la segunda cuenta con
ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa
Inicie sesión en github con su otra cuenta, vaya a https://github.com/settings/keys y pegue el contenido de
~/.ssh/custom_id_rsa.pub
Asegúrese de estar usando SSH en lugar de HTTPS como URL remota:
git remote set-url origin [email protected]:upstream_project_teamname/upstream_project.git
fuente
No tiene que mantener dos cuentas diferentes para personal y trabajo. De hecho, Github te recomienda mantener una sola cuenta y te ayuda a fusionar ambas.
Siga el siguiente enlace para fusionarse si decide que no es necesario mantener varias cuentas.
https://help.github.com/articles/merging-multiple-user-accounts/
fuente
A diferencia de otras respuestas, donde debe seguir algunos pasos para usar dos cuentas de github diferentes desde la misma máquina, para mí funcionó en dos pasos .
Solo necesitas:
1) genere un par de claves SSH pública y privada para cada una de sus cuentas en
~/.ssh
ubicación con diferentes nombres y2) agregue las claves públicas generadas a la cuenta respectiva en
Settings
>>SSH and GPG keys
>>New SSH Key
.Para generar los pares de claves públicas y privadas SSH, use el siguiente comando:
Como resultado de los comandos anteriores,
id_rsa_WORK
yid_rsa_WORK.pub
los archivos serán creados para su trabajo cuenta (ex - git.work.com) yid_rsa_PERSONAL
yid_rsa_PERSONAL.pub
se creará para su personal cuenta (ex - github.com).Una vez creado, copie el contenido de cada
*.pub
archivo public ( ) y realice el Paso 2 para cada cuenta.PD : No es necesario hacer una entrada de host para cada cuenta git bajo el
~/.ssh/config
archivo como se menciona en otras respuestas, si el nombre de host de sus dos cuentas es diferente.fuente
Si tiene WSL instalado, puede tener dos cuentas git separadas: una en WSL y otra en Windows.
fuente
Debe y no debe empujar al proyecto con algunas credenciales comunes. Una vez que comience en una nueva máquina, siga los siguientes pasos para configurar y usar correctamente sus credenciales de gitlab:
Todo esto de la siguiente manera:
fuente
Cree una nueva clave SSH en su terminal / línea de comando.
ssh-keygen -t rsa -C "su dirección de correo electrónico"
A continuación se mostrará lo siguiente:
Generando pares de claves rsa públicas / privadas. Ingrese el archivo en el que guardará la clave (/home/your_username/.ssh/id_rsa):
Copie y pegue la ruta seguida de un nombre identificable para el archivo:
4) Luego le pedirá lo siguiente:
5) Ahora puede escribir el siguiente comando para ver todas las claves SSH que tiene en su máquina local:
Debería poder ver su nuevo archivo de clave SSH. Como puede ver en mi cuenta, tengo tanto id_rsa_test como id_rsa_personal.pub.
6) A continuación, debe copiar la clave SSH que se almacena en el archivo id_rsa_personal.pub. Puede abrir esto en el editor de texto de su elección. Actualmente estoy usando Atom, así que abrí el archivo con el siguiente comando:
Luego obtendrá algo similar a esto:
Intantidades
7) Copie esto y navegue a su cuenta de GitHub → Configuración → SSH y claves GPG 8) Haga clic en Nueva clave SSH. Copie la clave, asígnele un título y agréguela. 9) Agregar clave desde la terminal
10) Configurar usuario y contraseña.
11) Estamos listos para comprometernos y presionar ahora.
fuente
Si ha creado o clonado otro repositorio y no ha podido extraer
origin
oupstream
agregar la clave ssh en ese directorio con el siguiente comando funcionó.Este es el error que estaba recibiendo aquí:
Usé el siguiente comando, esto funciona:
ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME
fuente