Otra opción es escribir un pequeño script para hacerlo core.sshCommand
un poco más inteligente: verifique si el directorio de trabajo actual tiene una clave SSH específica configurada y, si es así, úsela; de lo contrario, confíe en la resolución de clave SSH estándar.
Aquí está mi primera versión:
#!/bin/bash
key="$(git config ssh.key)"
if [ -n "$key" ]; then
ssh -o IdentitiesOnly=yes -i "$key" "$@"
else
ssh "$@"
fi
Luego configúrelo como el comando global git SSH:
chmod 755 ~/.local/bin/git-ssh-command
git config --global core.sshCommand ~/.local/bin/git-ssh-command
( ~/.local/bin
es el estándar actual para "colocar scripts de usuario aquí" en los sistemas operativos SystemD )
Después de configurar esto, puede configurar cualquier repositorio para usar una clave SSH específica configurando la opción de configuración ssh.key
:
git config --local ssh.key ~/.ssh/my-non-default-private-key
Trucos opcionales adicionales
- Establecer el global
ssh.key
para tener un "respaldo predeterminado a la clave SSH no predeterminada" o algo así.
- A medida que git se ejecuta
core.sshCommand
en el directorio raíz del repositorio, su cliente git-ssh-command
puede ver eso y tener algunas heurísticas sobre los nombres de directorio. Esto se puede hacer en la else
sección para que la heurística solo se active si no hay una clave específica ssh.key
.
- Puede agregar
git remote -v
verificación para agregar heurísticas basadas en los controles remotos, como en el script de Eike
- Si desea ver los controles remotos del repositorio, pero tiene varios controles remotos que necesitan claves diferentes, puede agregar
remote="$1:$(sed "s,.* ,,;s,',,g"<<<"$2")"
al comienzo del script para resolver el control remoto que se está operando, y verificarlo ( $remote
se vería como la columna del medio en la git remote -v
salida).