2011-01-28 7 views
5

Estoy usando la autenticación ssh publickey para mi repositorio de mercurial. Así que tengo:¿Cómo configurar múltiples identidades ssh para un solo repositorio de hg?

[ui] 
ssh = ssh -i ~/.ssh/id_rsa -C 

en mi .hgrc. Esto funciona bien y me permite presionar/jalar a un repositorio autenticado por ssh. Sin embargo, quiero poder hacer push/pull a otro repositorio que requiera una identidad diferente. ¿Cómo puedo configurar mi archivo .hgrc para que la identidad esté vinculada a una ruta particular? Supongo que me gustaría algo como:

[ui] 
one.prefix = someserver.com 
one.ssh = ssh -i ~/.ssh/id_rsa -C 
two.prefix = otherserver.com 
two.ssh = ssh -i ~/.ssh/otherid_rsa -C 

Respuesta

3

Lo haces utilizando la propia herramienta de ssh: ssh-agent.

$ eval $(ssh-agent) 
$ ssh-add ~/.ssh/id_rsa 
$ ssh-add ~/.ssh/otherid_rsa 

Entonces no es necesario identificar ssh relacionados con cualquier cosa en la sección [ui] sus .hgrc 's en absoluto.

Alternativamente se podría hacer:

[ui] 
ssh = ssh -i ~/.ssh/id_rsa -i ~/.ssh/otherid_rsa -C 

pero ssh-agent es útil en muchos manera es que vale la pena ponerlo secuencias de comandos de inicio de sesión y llamar a un día.

+1

Creo que es 'ssh = ssh -i ~/.ssh/id_rsa -i ~/.ssh/otherid_rsa -C' de lo contrario, obtenemos un error de uso de ssh. –

+0

definitivamente. Gracias. –

8

En su ~/.ssh/config, añadir

Host someserver.com 
IdentityFile ~/.ssh/id_rsa 

Host otherserver.com 
IdentityFile ~/.ssh/otherid_rsa 

y cualquiera (incluyendo hg y uso interactivo) usando ssh para conectarse a anfitriones someserver.com o otherserver.com utilizará los archivos de identidad especificados.

Ver ssh_config para otras opciones.

Cuestiones relacionadas