esto suena muy similar a mi configuración de trabajo actual. parece que ya ha configurado sussh-keys por lo que también necesita crear un ~/.ssh/configarchivo y completarlo con información similar a esta:
Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes
Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes
Cada propiedad suena bastante autoexplicativa, pero la IdentitiesOnlyúnica. No intentaré explicar para qué sirve, pero está en mi configuración actual y funciona bien.
También vale la pena señalar que Host URLes solo un puntero para obtener la configuración de usuario correcta y no tiene ningún efecto en la obtención de los archivos correctamente en su HostNameURL de destino .
Ahora solo necesita asegurarse de que su URL origin(o cualquiera remoteen general) coincida con la HostURL correcta en sus respectivos repositorios según su nombre de usuario. Si ya tiene repositorios personales existentes, puede editar los repositorios.git/config archivo de en su editor de texto:
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
o hacerlo a través de la línea de comando:
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
Lo mismo ocurre con tu trabajo uno:
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@work.github.com:your_work_organization/project.git
o de nuevo, a través de la línea de comando:
git remote set-url origin git@work.github.com:your_work_organization/project.git
Por supuesto, siempre puede configurar una de sus HostURL en su ~/.ssh/configarchivo como
Host github.com
Solo solía work.github.comver las relaciones de configuración más fáciles.
Una vez que estén todos configurados, debería poder presionar a cada control remoto respectivo.
EDITAR
Una cosa a tener en cuenta que acabo de descubrir es que si alguna vez establece valores de configuración global de git para su user.emailvalor (y supongo user.nameque también enviaría un valor diferente), git mostrará sus confirmaciones como ese usuario de correo electrónico. Para evitar esto, puede anular la configuración de configuración global de git dentro de su repositorio local:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Esto debería enviar confirmaciones como el usuario correcto para ese repositorio.