Quiero usar varias claves privadas para conectarme a diferentes servidores o diferentes porciones del mismo servidor (mis usos son la administración del sistema del servidor, la administración de Git y el uso normal de Git dentro del mismo servidor). Intenté simplemente apilar las claves en los id_rsa
archivos en vano.
Aparentemente, una forma sencilla de hacerlo es usar el comando
ssh -i <key location> [email protected]
Eso es bastante engorroso.
¿Alguna sugerencia sobre cómo hacer esto un poco más fácil?
Respuestas:
De mi
.ssh/config
:Y así.
fuente
IdentityFile
entradas para el mismoHost
, que luego se prueban en orden al conectarse.IdentitiesOnly yes
para evitar ~ / .ssh / id_rsa o cualquier otra identidad. (Esto originalmente era una edición)Puede indicar a ssh que intente varias claves sucesivas al conectarse. Así es cómo:
De esta manera, no tiene que especificar qué clave funciona con qué servidor. Solo usará la primera tecla de trabajo.
Además, solo ingresaría una frase de contraseña si un servidor determinado está dispuesto a aceptar la clave. Como se vio anteriormente, ssh no intentó pedir una contraseña,
.ssh/id_rsa
incluso si la tenía.Seguramente no supera una configuración por servidor como en otras respuestas, pero al menos no tendrá que agregar una configuración para todos y cada uno de los servidores a los que se conecta.
fuente
La respuesta de Randal Schwartz casi me ayudó en todo momento. Tengo un nombre de usuario diferente en el servidor, así que tuve que agregar la palabra clave Usuario a mi archivo:
Ahora puedes conectarte usando el nombre descriptivo:
Se pueden encontrar más palabras clave en la página de manual de OpenSSH . NOTA: Algunas de las palabras clave enumeradas pueden estar presentes en su archivo / etc / ssh / ssh_config .
fuente
Las respuestas anteriores han explicado correctamente la forma de crear un archivo de configuración para administrar múltiples claves ssh. Creo que lo importante que también debe explicarse es la sustitución de un nombre de host con un nombre de alias mientras se clona el repositorio .
Supongamos que el nombre de usuario de la cuenta de GitHub de su empresa es abc1234 . Y supongamos que el nombre de usuario de su cuenta personal de GitHub es jack1234
Y, supongamos que ha creado dos claves RSA, a saber, id_rsa_company e id_rsa_personal . Por lo tanto, su archivo de configuración se verá a continuación:
Ahora, cuando clona el repositorio (denominado demo) de la cuenta de GitHub de la compañía, la URL del repositorio será algo así como:
Ahora, mientras lo hace
git clone
, debe modificar la URL del repositorio anterior como:Observe cómo github.com ahora se reemplaza con el alias "compañía" como hemos definido en el archivo de configuración.
De manera similar, debe modificar la URL de clonación del repositorio en la cuenta personal según el alias proporcionado en el archivo de configuración.
fuente
Asegúrese de probarlo antes de agregar con:
Si tiene algún problema con los errores, a veces, cambiar la seguridad del archivo ayuda:
fuente
Genere una clave SSH:
Genere otra clave SSH :
Ahora, deben existir dos claves públicas ( id_rsa.pub , accountB.pub ) en el
~/.ssh/
directorio.Cree un archivo de configuración
~/.ssh/config
con los siguientes contenidos:Clonar de la
default
cuenta.Clonar de la
accountB
cuenta.Ver más aquí
fuente
Estoy de acuerdo con Tuomas sobre el uso de ssh-agent. También quería agregar una segunda clave privada para el trabajo y este tutorial funcionó de maravilla para mí.
Los pasos son los siguientes:
$ ssh-agent bash
$ ssh-add /path.to/private/key
p.ejssh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
por ejemplossh -v [email protected]
fuente
ssh-agent
durante años, recientemente cambié a usar Gnome'sgnome-keyring
dentro de mii3
wm. La razón es simple: el administrador de llaveros de Gnome maneja automáticamente la adición y eliminación de claves ssh sin que tenga que recordarlossh-add
. Además, me proporcionó una contraseña única para desbloquearlos (y tiempo de espera en un tiempo específico, por seguridad). A cada uno lo suyo. Como uso la configuración de gnome en Arch, fue plug and play con mi configuración. Si eres anti-gnomo, ignora este comentario.Me encontré con este problema hace un tiempo, cuando tenía dos cuentas de Bitbucket y quería tener que almacenar claves SSH separadas para ambas. Esto es lo que funcionó para mí.
Creé dos configuraciones ssh separadas de la siguiente manera.
Ahora, cuando tenía que clonar un repositorio de mi cuenta de trabajo, el comando era el siguiente.
Tuve que modificar este comando para:
Del mismo modo, el comando clonar de mi cuenta personal tuvo que modificarse para
Consulte este enlace para más información.
fuente
Use ssh-agent para sus claves.
fuente
Ahora, con la versión reciente de Git, podemos especificar sshCommand en el archivo de configuración de Git específico del repositorio:
fuente
Puede crear un archivo de configuración con nombre
config
en su~/.ssh
carpeta. Puede contener:Esto te permitirá conectarte a máquinas como esta
fuente
IMPORTANTE: debe iniciar ssh-agent
Debe iniciar ssh-agent (si aún no se está ejecutando) antes de usar ssh-add de la siguiente manera:
Tenga en cuenta que el comando eval inicia el agente en Git Bash en Windows. Otros entornos pueden usar una variante para iniciar el agente SSH.
fuente
En Ubuntu 18.04 (Bionic Beaver) no hay nada que hacer.
Después de haber creado una segunda clave SSH con éxito, el sistema intentará encontrar una clave SSH coincidente para cada conexión.
Para que quede claro, puede crear una nueva clave con estos comandos:
fuente
Múltiples pares de claves en GitHub
1.0 archivo de configuración SSH
1.1 Crear ~ / .ssh / config
1.2 chmod 600 ~ / .ssh / config ( debe )
1.3 Ingrese lo siguiente en el archivo:
Caso A: nuevo y fresco clon de Git
Use este comando para clonar Git:
Nota: Si desea cambiar el nombre de host "pizza" de .ssh / config en el futuro, vaya a la carpeta clonada Git, edite la línea URL del archivo .git / config (vea el caso B)
Caso B: ya tengo la carpeta de clonación Git
2.1 Vaya a la carpeta clonada y luego vaya a la carpeta .git
2.2 Editar archivo de configuración
2.3 Actualice la URL de * antiguo a nuevo :
fuente
Para mí, la única solución de trabajo era simplemente agregar esto en el archivo
~/.ssh/config
:your_ssh_key
Es sin ninguna extensión. No utilice.pub
.fuente
En CentOS 6.5 con OpenSSH_5.3p1 y OpenSSL 1.0.1e-fips, resolví el problema cambiando el nombre de mis archivos clave para que ninguno de ellos tuviera el nombre predeterminado.
Mi directorio .ssh contiene id_rsa_foo e id_rsa_bar, pero no id_rsa, etc.
fuente
-i
opción puede resultar en algo asíno such identity: /home/embo/.ssh/id_rsa: No such file or directory
.Como se menciona en una página de blog de Atlassian , genere un archivo de configuración dentro de la carpeta .ssh , que incluya el siguiente texto:
Luego, simplemente puede pagar con el dominio de sufijo y dentro de los proyectos puede configurar los nombres de los autores, etc. localmente.
fuente
Aquí está la solución que utilicé inspirada en la respuesta de sajib-khan . La configuración predeterminada no está establecida; es mi cuenta personal en GitLab y la otra especificada es la cuenta de mi empresa. Aquí esta lo que hice:
Generar la clave SSH
Edite la configuración SSH
Eliminar las claves SSH almacenadas en caché
¡Pruébalo!
Úsalo!
Cuenta de la compañia
Cuenta personal / predeterminada
Aquí está la fuente que usé.
fuente
Me encanta el enfoque para establecer lo siguiente en el archivo ~ / .ssh / config:
Luego, en su repositorio, puede crear un
.env
archivo que contenga elssh
comando que se utilizará:Si luego usa, por ejemplo, dotenv, la variable de entorno del entorno se exporta automáticamente y whoop whoop, puede especificar la clave que desea por proyecto / directorio. La frase de contraseña se solicita solo una vez, ya que se agrega al llavero.
Esta solución funciona perfectamente con Git y está diseñada para funcionar en una Mac (debido a
UseKeychain
).fuente
Puede probar este paquete sshmulti npm para mantener varias claves SSH.
fuente