est ici un peu d'une liste de vérification:
- est-ssh activé sur le serveur que vous essayez de vous connecter?
- GIT est-il installé sur le serveur?
- Avez-vous une configuration de référentiel Git sur le serveur?
- Le référentiel dispose-t-il des autorisations appropriées et le référentiel partagé est-il activé dans la configuration sur le serveur?
Avez-vous les clés ssh au bon endroit pour GIT?
Suggestions:
1: Comme vous pouvez vous connecter à l'aide du mastic, ressemble à ssh est configuré ok.
2: Utilisez du mastic et connectez-vous au serveur. Tapez git --version
Obtenez-vous une réponse raisonnable? Si ce n'est pas le cas, vous devrez l'installer sur le serveur.
3: Essayez de configurer un nouveau référentiel sur le serveur. En supposant son serveur de style aixix, utilisez putty et connectez-vous au serveur et créez un nouveau référentiel en utilisant les commandes suivantes, en supposant que vous avez un répertoire/home/source_code. La ligne d'écho crée simplement un fichier contenant un peu de texte afin que nous puissions commencer par quelque chose.
cd /home/source_code
mkdir test_repo
cd /home/source_code/test_repo
echo "first file" > t.txt
git init
git add .
git commit -m "Initial Import"
Maintenant, nous avons un dépôt avec un fichier t.txt dedans. En règle générale, vous ne devez jamais insérer dans un référentiel contenant des modifications apportées à la copie de travail. Le but d'avoir un référentiel sur le serveur est que les gens puissent y accéder tout le temps. Nous faisons un clone "nu" qui est seulement la base de données git, de cette façon il n'y a aucune possibilité de changements de copie de travail. C'est ce clone "nu" que nous utiliserons comme référentiel git central.
cd /home/source_code
git clone --bare test_repo/ test_repo.git
Vous pouvez maintenant vous débarrasser du référentiel temporaire que nous avons configuré.
cd /home/source_code/
rm -rf test_repo
Sur votre ordinateur local essayez le clonage à nouveau
git clone ssh://[email protected]:port/home/source_code/test_repo.git
4: Permission: Cela ne devrait pas poser un problème avec le clonage, aller chercher ou de tirer, sauf si vous avez sélectionné un emplacement pour le dépôt qui ne marche pas avoir lire l'accès. Si vous obtenez une erreur Autorisation refusée lors de la poussée en arrière puis reportez-vous à Permissions correction
5: Mise en place publique/clé privée pour GIT:
- Se connecter au serveur avec du mastic
- Définissez les autorisations sur votre ~/Dossier .ssh:
chmod 700 .ssh
- Définissez des permissions sur votre ~ /.ssh/authorized_keys:
chmod 600 authorized_keys
- Générez les clés
ssh-keygen -t dsa
- accepte les noms de fichiers qu'il souhaite utiliser
- Ne pas entrer un mot de passe (il suffit d'entrer). Vous voudrez refaire cela avec une phrase de passe plus tard.
- ajouter la clé de pub au fichier authorized_keys:
cat id_dsa.pub >> .ssh/authorized_keys
- modifier/etc/ssh/ssh_config et ajoutez la ligne
PubkeyAuthentication yes
- redémarrer le démon ssh
sudo /etc/init.d/ssh restart
- Copie
id_dsa
et id_dsa.pub
du serveur sur votre disque locale drive (utilisez winscp ou sftp ou un autre outil de ce type) c: \ users \ userName \ .ssh (pour Vista, l'emplacement sera un peu différent pour les autres versions de Windows)
- Définissez tort git pour pointer sur C: \ Programmes \ Git \ bin \ ssh.exe (pas mastic)
La ligne de commande git et tortoise git doivent être configurées pour fonctionner. Essayez à nouveau de cloner sur votre machine locale.
git clone ssh://[email protected]:port/home/source_code/test_repo.git
Vous pourriez maintenant vouloir aller et répéter la mise en place des touches avec un mot de passe ....
hey merci pour la réponse - oui, j'ai cours d'exécution et la reconstitution historique clé est chargé. la variable d'environnement GIT_SSH (via /Git/setup.ini) est définie sur le chemin comme ci-dessus. –
même quand je lance git push ssh: // utilisateur @ hôte: port/chemin/vers/myapp.git - je reçois juste "fatal: l'extrémité distante se bloque de manière inattendue" –
est-il possible de déboguer dans "GIT"? c'est-à-dire trace ou quelque chose? comment obtenir cela dans la sortie? –