2009-09-30 12 views
7

Quindi mi sembra di avere alcuni problemi reali di impostazione di msysgit. Posso collegare via stucco al mio indice SSH utilizzandomsysgit problemi

ssh: // utente @ host: porta

E ho i tasti corretti. Posso anche farlo usando plink tramite il

plink -P porta utente @ host -i /path/to/private_key.ppk

Quando si tenta di eseguire (tramite TortiseGIT) o tramite un git bash

git clone ssh: // utente @ host: port/path/to/myapp.git

continuo a ottenere l'errore

Repository Git vuoto inizializzato in D: /Git/myapp.git
avviso: sembra che sia stato clonato un repository vuoto.
fatale: la fine remota riattaccato inaspettatamente

Ho controllato bot /Git/setup.ini e TortiseGIT ed entrambi utilizzare

C: \ Program Files \ TortoiseSVN \ bin \ TortoisePlink.exe

Qualcuno sa come posso risolvere questo problema perché mi fa impazzire!

risposta

1

È necessario installare Pageant e aggiungere la chiave al suo interno.

anche il doppio controllo che la variabile ambiente GIT_SSH è configurato per utilizzare Plink

+0

hey grazie per la risposta - sì, ho correre spettacolo e la chiave viene caricato in esso. la variabile di ambiente GIT_SSH (tramite /Git/setup.ini) è impostata sul percorso come sopra. –

+0

anche quando eseguo git push ssh: // utente @ host: porta/percorso/a/mioapp.git - ho solo "fatale: l'estremità remota riattacca inaspettatamente" –

+0

c'è un modo per eseguire il debug in "GIT"? Traccia o qualcosa? come ottenere questo risultato? –

0

C'è qualcosa (vale a dire almeno un commit) nel repository remoto?

git dice: "warning: È sembrano aver clonato un repository vuoto"

e quando si vuole spingere in pronti contro termine a distanza vuoto è necessario utilizzare:

git push URL master 
+0

grazie per la risposta. sì, non sono sicuro che questo è il problema perché anche quando spingo ho ancora ottenere l'errore. come posso "debugare" git o plink? hai qualche idea? –

+0

Ehh ... Non sei sicuro che questo sia il problema? Pensavo che non potessi entrare in quel repository? (vedi commento alla risposta di nolim1t) –

+0

Puoi provare a impostare GIT_TRACE = 1 e 'git ls-remote Your-URL' –

0

Hai provato di collegamento da Git-Bash con ssh user @ host: port? Si collega direttamente o richiede una password?

La porta è necessaria solo se si utilizza una porta non standard per ssh altrimenti verrà impostata su 22. È una cosa da Putty ma assicurarsi di poter connettersi da git bash perché generalmente avrà un proprio archivio di chiavi in una directory .ssh fuori dalla directory dell'utente. Se non è possibile ottenere che lavorare da Git-Bash è necessario fissare la chiave o di debug dove sia il problema, provare a specificare la chiave utilizzando

ssh utente keyfile -i @ host: porta

se che doesn funziona o ti richiede una password sulla macchina remota, significa che lo scambio di chiavi non funziona correttamente.Quindi è necessario verificare che i tasti siano impostati correttamente per quanto riguarda l'ambiente Git-Bash. In particolare, assicurati di aver esportato la chiave RSA e non solo di usare la chiave ppk con Git-Bash. Non credo che sia supportato. Non uso Tortoise-Git quindi non posso aiutarlo, ma uso regolarmente Git Bash.

9

Qui è un po 'di una lista di controllo:

  1. ssh abilitato sul server che si sta tentando di connettersi?
  2. GIT è installato sul server?
  3. Avete un set di repository Git sul server?
  4. Il repository ha le autorizzazioni corrette e ha sharedrepository abilitato nella configurazione sul server?
  5. Avete le chiavi SSH nel posto giusto per GIT?

    Suggerimenti:

1: Dal momento che è possibile connettersi utilizzando stucco, si presenta come ssh è configurato ok.

2: utilizzare lo stucco e collegarsi al server. Digitare git --version Si ottiene una risposta ragionevole? In caso contrario, sarà necessario installarlo sul server.

3: provare a configurare un nuovo repository sul server. Supponendo che un server in stile * nix utilizzi lo stucco e si connetta al server e crei un nuovo repository usando i seguenti comandi, assumendo che tu abbia una directory/home/codice_destinazione. La linea di eco crea solo un file con un po 'di testo, quindi abbiamo qualcosa da cui iniziare.

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" 

Quindi ora abbiamo un repository con un file t.txt al suo interno. Di regola non si dovrebbe mai inserire in un repository che contiene modifiche alla copia di lavoro. Lo scopo di avere un repository sul server è tale che le persone possano inserirvi tutto il tempo. Creiamo un clone "nudo" che è solo il database git, in questo modo non è possibile alcuna modifica delle copie di lavoro. È questo clone "nudo" che useremo come repository git centrale.

cd /home/source_code 
git clone --bare test_repo/ test_repo.git 

Ora è possibile eliminare il repository temporaneo che abbiamo impostato.

cd /home/source_code/ 
rm -rf test_repo 

Sul computer locale tentare la clonazione di nuovo

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

4: Permessi: Questo non dovrebbe causare un problema con la clonazione, il recupero o tirare, a meno che non è stato selezionato un percorso per il repository che doesnt hanno accesso in lettura. Se si ottiene un errore di autorizzazione negata quando si spinge allora fare riferimento al Permissions correction

5: Impostazione pubblica/chiave privata per GIT:

  1. Connettersi al server con stucco
  2. Impostare le autorizzazioni sul tuo ~/cartella .ssh: chmod 700 .ssh
  3. Imposta i permessi sul tuo ~ /.ssh/authorized_keys: chmod 600 authorized_keys
  4. generare le chiavi ssh-keygen -t dsa
  5. accettare i nomi dei file che vuole utilizzare
  6. Non immettere una passphrase (basta inserire). Dovrai ripetere l'operazione con una passphrase in seguito.
  7. aggiungere la chiave pub per il file authorized_keys: cat id_dsa.pub >> .ssh/authorized_keys
  8. modificare/etc/ssh/ssh_config e aggiungere la riga PubkeyAuthentication yes
  9. riavviare il demone SSH sudo /etc/init.d/ssh restart
  10. Copia id_dsa e id_dsa.pub dal server sul disco locale guidare (usare winscp o sftp o alcuni di questi strumenti) c: \ users \ nomeutente \ .ssh directory (questo è per vista la posizione sarà un po 'diversa per altre versioni di windows)
  11. Impostare git tartaruga per puntare a C: \ Programmi \ Git \ bin \ ssh.exe (non in putrefazione)

Sia la riga di comando git che tortoise git dovrebbero essere configurate per funzionare. Prova a ripetere la clonazione sul tuo computer locale.

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

Si potrebbe ora vuole andare a ripetere l'impostazione dei tasti con una passphrase ....

Problemi correlati