Celui qui a voté pour "fermer", cette question - est directement liée à la programmation pour la même raison que les questions sur GIT sont autorisées ici
James Raitsev
1
Sans doute ... C'est vraiment une question de super-utilisateur, le problème ici n'est pas git, mais la plate-forme sur laquelle il fonctionne. Vous ne pouvez pas vérifier "in git" pour le problème, car git s'en moque, il ne concerne que la façon dont vous utilisez ssh et comment il est configuré. Utilisez-vous ssh-agent, tout type de système de gestion de clés, quel système d'exploitation utilisez-vous, quelle version, etc.?
Arafangion
Réponses:
68
L'entrée suivante dans le .ssh/configfichier résout le problème
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Où ~/.ssh/whateverest un chemin vers votre clé privée
De plus, l'utilisateur et l'hôte peuvent être récupérés
git push [email protected]:repo_name.git
^__ ^_______________
user host
donc si je voulais utiliser une autre clé ssh pour un hôte différent, est-ce que je répéterais simplement la même chose après le premier ?? Le fichier d'identité appartient-il au premier hôte avant lui?
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 [email protected]pouvez vous donner la réponse.
Remarque: vous pouvez également utiliser le -icommutateur pour indiquer à ssh lors de l'exécution de la commande, quel fichier de clés utiliser.
Vous pouvez également grep la sortie d'erreur standard de la commande ssh pour trouver le fichier clé comme ceci: 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
Gianfranco P.
3
githubn'est pas la même chose que git.
ForeverWintr
9
À moins qu'il ne soit spécifié sur le, .ssh/configil utilisera le fichier de clé privée par défaut.
Le fichier par défaut est ~/.ssh/id_rsaou ~/.ssh/id_dsaou ~/.ssh/identityselon la version du protocole.
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 gitsuggère, il existe quelques variables environnementales qui affectent les opérations de Git avec l'utilisation de SSH. Selon man sshvous, vous pouvez obtenir des informations de débogage lors du déploiement de l' -voption (non seulement, mais aussi, consultez le manuel si vous êtes curieux d'en savoir plus).
OUI. Cela devrait être la réponse acceptée. Pour le faire fonctionner sur Windows CMD (ugh), utilisez: 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/configpour 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.
icyerasor le
5
Comme il gitne sert sshqu'à se connecter, il utilisera la clé sshutilisée pour se connecter à l'hôte distant. Voir le ~/.ssh/configfichier pour plus de détails; le hostbloc utilise la IdentityFiledirective pour spécifier la clé privée à utiliser. La ssh_config(5)page de manuel contient tous les détails.
C'est peut-être super, mais après l'avoir exécuté, ssh -vT [email protected]il m'a montré qu'il vérifiait /root/.sshles 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!
Cette technique, entre autres la même sshmanière d'interroger sont les bonnes solutions. Merci.
eigenfield
1
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).
Réponses:
L'entrée suivante dans le
.ssh/config
fichier résout le problèmeOù
~/.ssh/whatever
est un chemin vers votre clé privéeDe plus, l'utilisateur et l'hôte peuvent être récupérés
la source
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.Maintenant, si vous combinez cela, avec l'étape 4 de la page d'aide SSH de Git , vous
ssh -vT [email protected]
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.la source
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 quegit
.À 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.la source
Je dirais que le plus pratique à mon goût serait:
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:
- Comme le
man git
suggère, il existe quelques variables environnementales qui affectent les opérations de Git avec l'utilisation de SSH. Selonman 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).Dans la sortie, vous verriez un peu comme…
… Qui est la réponse à votre qn.
la source
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 uneHOST *
entrée pour spécifier le fichier d'identité utilisé par git / ssh.Comme il
git
ne sertssh
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; lehost
bloc utilise laIdentityFile
directive pour spécifier la clé privée à utiliser. Lassh_config(5)
page de manuel contient tous les détails.la source
/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 [email protected]
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!la source
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:
mais ils peuvent être différents sur une autre distribution. Il suffit de google pour leur emplacement (certains utilisent / var / log / secure par exemple).
la source