Pregunta:
Tengo una cuenta personal y una cuenta de empresa en Unfuddle. En Unfuddle, las claves SSH solo se pueden usar en una sola cuenta, por lo que necesito crear una clave SSH separada en mi computadora portátil para ambas cuentas. Ejecuté ssh-keygen -t rsa
para generar dos claves con nombres diferentes (personal es el nombre predeterminado y la empresa es {empresa} _rsa). El problema ahora es que parece que mi clave predeterminada se usa en todas partes y no puedo encontrar cómo especificar una clave para usar en Git para repositorios individuales.
Entonces, mi pregunta es: ¿Cómo especifico una clave SSH para usar en una base de repositorio a repositorio?
Configuré mi ssh_config (~ / .ssh / config) pero todavía no parece funcionar.
config:
Host {personalaccount}.unfuddle.com
HostName {personalaccount}.unfuddle.com
User git
IdentityFile /Users/dave/.ssh/id_rsa
Host {companyaccount}.unfuddle.com
HostName {companyaccount}.unfuddle.com
User git
IdentityFile /Users/dave/.ssh/cage_rsa
Mi archivo de configuración de repositorio de Git para un repositorio en la cuenta de recuperación de mi empresa se ve así:
[remote "origin"]
url = git@{companyaccount}.unfuddle.com:{companyaccount}/overall.git
fetch = +refs/heads/*:refs/remotes/origin/*
Así que no estoy seguro de si hay algún problema con mi configuración ssh o mi configuración git.
Respuesta:
Si tiene un ssh-agent activo que tiene id_rsa
su clave id_rsa
, entonces el problema es probable que ssh esté ofreciendo esa clave primero. Unfuddle probablemente lo acepta para autenticación (por ejemplo, en sshd ) pero lo rechaza para obtener autorización para acceder a los repositorios de la empresa (por ejemplo, en cualquier software interno que usen para la autorización, posiblemente algo parecido a Gitolite). Quizás haya una manera de agregar su clave personal a la cuenta de la empresa (varias personas no comparten los mismos archivos de clave pública y privada corp_rsa
?).
La palabra clave de configuración IdentitiesOnly
.ssh/config
se puede usar para limitar las claves que ssh ofrece al sshd remoto a solo las especificadas a través de las palabras clave de IdentityFile
(es decir, se negará a usar cualquier clave adicional que se cargue en un ssh-agent activo ).
Pruebe estas secciones .ssh/config
:
Host {personalaccount}.unfuddle.com
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host {companyaccount}.unfuddle.com
IdentityFile ~/.ssh/{companyaccount}_rsa
IdentitiesOnly yes
Luego, use URL de Git como estas:
git@{personalaccount}.unfuddle.com:{personalaccount}/my-stuff.git
git@{companyaccount}.unfuddle.com:{companyaccount}/their-stuff.git
Si desea aprovechar al .ssh/config
mecanismo .ssh/config
, puede proporcionar su propio nombre de host personalizado y cambiar el nombre de usuario predeterminado:
Host uf-mine
HostName {personalaccount}.unfuddle.com
User git
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host uf-comp
HostName {companyaccount}.unfuddle.com
User git
IdentityFile ~/.ssh/{companyaccount}_rsa
IdentitiesOnly yes
Luego, use URL de Git como estas:
uf-mine:{personalaccount}/my-stuff.git
uf-comp:{companyaccount}/their-stuff.git