it-swarm-es.com

Cómo usar múltiples claves ssh con diferentes cuentas y hosts

tengo varias claves ssh y también tengo cuenta en bitbucket y github. como siempre que uso pull me da error

:/var/www/proj$ git pull Origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

o si ssh el sitio web bitbucket da errores culo clave pública denegada

:~$ ssh [email protected]
Permission denied (publickey).

¿Cómo puedo resolver esto y usar diferentes claves con diferentes cuentas?.

21
Iori

Todo esto se recopiló del sitio web y stackoverflow, espero que esto ayude a quienes son nuevos en ssh

para que puedas tener muchas teclas ssh

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

Nota: necesitamos agregar luego al agente ssh, probablemente se agregará id_rsa, por lo que debemos agregar la otra clave privada

~/.ssh$ ssh-add yyy_id_rsa

ahora hemos agregado ambas claves ssh a ssh-agent

tenemos uno para bitbucket y otro para github

entonces creamos un archivo de configuración como este

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

Nota: estoy usando 2 teclas diferentes para 2 cuentas diferentes en bitbucket y una para github.

Ahora tenemos que decirle al repositorio git qué Host usar para que obtenga esa clave ssh específica para esa cuenta específica

cambiar [email protected]/yyyproject.git a [email protected]:yyyuser/yyyproject.git

así que en la carpeta del proyecto y agregue la URL remota

/var/www/yyyproject$ git remote add bit [email protected]:yyyuser/yyyproject.git

en otro proyecto

/var/www/xxxproject$ git remote add bitt [email protected]:xxxuser/xxxproject.git

ahora puedes usar Push and pull fácilmente

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

y otro proyecto

/var/www/xxxproject$ git Push bitt ver1
To [email protected]:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

ahora no tengo el proyecto github en la máquina local, por lo que debemos clonar el proyecto pero debemos hacer un pequeño cambio en la url para clonar

nuestra url es así

[email protected]:xxxuser/python.git

ya que tenemos que clonarlo con teclas específicas, solo necesitamos cambiar el nombre del Host con el Host que hemos definido

[email protected]:xxxuser/python.git

como se define en el archivo de configuración

y ahora podemos clonar

:/var/www/us$ git clone [email protected]:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

hemos identificado diferentes claves ssh para diferentes Host, una para git y otra para bitbucket, ahora el sistema sabe qué claves ssh se utilizarán con qué Host.

Ahora podemos tirar fácilmente, empujar.

21
Iori

Configuro ~/.ssh/config, así:

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

luego use el nombre de host personalizado en lugar del dominio real en git url:

git remote add thuc [email protected]:your-repo.git  

Para obtener más detalles, lea aquí: http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-Push-for-a-given-domain/

1
thucnguyen