Tengo una cuenta personal ericpersonal y una cuenta de empresa ericcompanyabc (me obligaron a hacerlo aunque podrían haber agregado mi cuenta personal de GitHub a sus repositorios) en github.com.
Estoy usando una computadora que me da la compañía y dedico más tiempo a los proyectos de trabajo, así que estoy conectado principalmente como ericcompanyabc
Luego generé 2 claves privadas y públicas como resultado:
❯ ls -lrt ~/.ssh
total 72
-rw------- 1 eric.nguyen eric.nguyen 110 Aug 31 11:03 authorized_keys.jcorig
-rw-r--r-- 1 eric.nguyen eric.nguyen 2004 Sep 13 14:16 known_hosts
lrwxr-xr-x 1 eric.nguyen eric.nguyen 76 Sep 25 21:53 ssh_auth_sock -> /var/folders/c3/q4dw0_q90lj6_nysk_hjt8p00000gn/T//ssh-31QAwZUf1Pmz/agent.501
-rw------- 1 eric.nguyen eric.nguyen 743 Oct 26 16:02 id_rsa2.pub
-rw------- 1 eric.nguyen eric.nguyen 3243 Oct 26 16:02 id_rsa2
-rw-r--r-- 1 eric.nguyen eric.nguyen 746 Oct 27 16:29 id_rsa1.pub
-rw------- 1 eric.nguyen eric.nguyen 3243 Oct 27 16:29 id_rsa1
-rw-r--r-- 1 eric.nguyen eric.nguyen 279 Oct 27 16:29 config
-rw------- 1 eric.nguyen eric.nguyen 225 Nov 3 17:57 authorized_keys
Tengo que cambiar entre las 2 cuentas usando los siguientes comandos pero es muy tedioso:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa1
También he intentado usar .ssh/config
el archivo pero sin éxito
❯ cat ~/.ssh/config
Host githubcompany
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa1
UseKeychain yes
Host githuberic
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa2
AddKeysToAgent yes
UseKeychain yes
¿Qué puedo hacer para que el cambio entre cuentas de Github sea sencillo?
Estoy usando macOS Sierra 10.12.6
La solución simple para mí es evitar cambiar mi identidad, por lo que no tengo que automatizar el cambio de las variables de entorno y los archivos que proporcionan la identidad al shell:
(Otorgar acceso a ericpersonal a repositorios de trabajo es imposible aquí, por supuesto)
bmike
su
entre ellas con indicaciones y entornos distintos. Me pregunto si las funciones de shell podrían intercambiar las variables necesarias,foo work
yfoo home
eric
alias gitpersonal=eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa2
bastaria