Supposons que votre .ssh
répertoire contient 30 clés (15 privées et 15 publiques).
Où dans Git peut-on vérifier lequel est utilisé pour se connecter à un référentiel distant donné?
Supposons que votre .ssh
répertoire contient 30 clés (15 privées et 15 publiques).
Où dans Git peut-on vérifier lequel est utilisé pour se connecter à un référentiel distant donné?
Réponses:
L'entrée suivante dans le .ssh/config
fichier résout le problème
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Où ~/.ssh/whatever
est un chemin vers votre clé privée
De plus, l'utilisateur et l'hôte peuvent être récupérés
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
L'exécution de ssh en mode verbeux, alias ssh -v user@host
, affichera une énorme charge d'informations de débogage, qui contiennent également des détails sur les fichiers de clés qu'il tente de se connecter.
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Maintenant, si vous combinez cela, avec l'étape 4 de la page d'aide SSH de Git , vous ssh -vT git@github.com
pouvez vous donner la réponse.
Remarque: vous pouvez également utiliser le -i
commutateur pour indiquer à ssh lors de l'exécution de la commande, quel fichier de clés utiliser.
ssh -vv user@host 2> >(grep Offering)
- cela facilitera les choses. Le dernier fichier doit être la clé publique. Par exemple:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
n'est pas la même chose que git
.
À moins qu'il ne soit spécifié sur le, .ssh/config
il utilisera le fichier de clé privée par défaut.
Le fichier par défaut est ~/.ssh/id_rsa
ou ~/.ssh/id_dsa
ou ~/.ssh/identity
selon la version du protocole.
Je dirais que le plus pratique à mon goût serait:
GIT_SSH_COMMAND='ssh -v' git …
bien sûr, selon les circonstances, il peut être avantageux de simplement l'exporter vers l'environnement actuel de SHELL afin de ne pas avoir à l'ajouter manuellement à chaque fois. Alors ce serait comme ça:
export GIT_SSH_COMMAND='ssh -v'
git …
- Comme le man git
suggère, il existe quelques variables environnementales qui affectent les opérations de Git avec l'utilisation de SSH. Selon man ssh
vous, vous pouvez obtenir des informations de débogage lors du déploiement de l' -v
option (non seulement, mais aussi, consultez le manuel si vous êtes curieux d'en savoir plus).
quelle clé est utilisée?
Dans la sortie, vous verriez un peu comme…
debug1: Offering public key: …
… Qui est la réponse à votre qn.
set GIT_SSH_COMMAND=ssh -v
. Cela m'a aidé à comprendre que le ssh-config Inlcude-Path devrait être quelque chose comme ça sur Windows: Include /C/Users/YourUserName.ssh/config
pour faire ssh et donc git utiliser un fichier de configuration qui utilise ensuite par exemple une HOST *
entrée pour spécifier le fichier d'identité utilisé par git / ssh.
Comme il git
ne sert ssh
qu'à se connecter, il utilisera la clé ssh
utilisée pour se connecter à l'hôte distant. Voir le ~/.ssh/config
fichier pour plus de détails; le host
bloc utilise la IdentityFile
directive pour spécifier la clé privée à utiliser. La ssh_config(5)
page de manuel contient tous les détails.
/etc/ssh/ssh_config
/etc/ssh_config
qui semble être un fichier plein d'entrées commentées
~/.ssh/config
vous-même.
C'est peut-être super, mais après l'avoir exécuté, ssh -vT git@github.com
il m'a montré qu'il vérifiait /root/.ssh
les clés, je m'attendais à ce qu'il vérifie mon répertoire personnel, puis j'ai réalisé que j'étais connecté en tant que root!
ssh
manière d'interroger sont les bonnes solutions. Merci.
Sur le serveur distant, modifiez le fichier sshd_config et modifiez LogLevel de INFO à VERBOSE et redémarrez ssh.
Maintenant, votre fichier journal contiendra l'empreinte digitale de la clé qui a été utilisée pour authentifier chaque utilisateur.
Sur Ubuntu, ces fichiers sont:
/etc/ssh/sshd_config
/var/log/auth.log
mais ils peuvent être différents sur une autre distribution. Il suffit de google pour leur emplacement (certains utilisent / var / log / secure par exemple).