2011-09-07 4 views
11

Per clonare un repository gestito da uno gitolite solito usa seguente sintassigitolite con porta non predefinita

git clone [email protected]:repository 

Questo dice al client SSH per connettersi alla porta 22 di server di utilizzando gitolite come nome utente. Quando provo con il numero di porta:

git clone [email protected]:22:repository 

Git lamenta che il repository 22: repository non è disponibile. Quale sintassi dovrebbe essere utilizzata se il server SSH utilizza una porta diversa?

+0

possibile duplicato di [git remote add con un'altra porta ssh] (http://stackoverflow.com/questions/3596260/git-remote-add-with-other-ssh-port) –

risposta

17

La sintassi URL Git "stile SCP" ([email protected]:path) non supporta l'inclusione di una porta. Per includere una porta, devi utilizzare un "Git URL" ssh://. Ad esempio:

ssh://[email protected]:2222/repository 

Nota: rispetto alla [email protected]:repository, questo presenta un percorso di repository leggermente diverso all'estremità remota (assoluto /repository invece che il percorso relativo repository); Gitolite accetta entrambi i tipi di percorsi, altri sistemi possono variare.


Un'alternativa è quella di utilizzare una voce Host nel ~/.ssh/config (consultare il ssh_config(5) manpage). Con tale voce, è possibile creare un "nickname host SSH" che incorpori il nome/indirizzo del server, il nome utente remoto e il numero di porta non predefinito (così come qualsiasi altra opzione SSH che potrebbe piacerti):

Host gitolite 
    User  gitolite 
    HostName server 
    Port  2222 

Quindi è possibile utilizzare URL Git molto semplici come gitolite:repository.


Se si deve documentare (e o configurare) questo per più persone, vorrei andare con ssh:// URL, dal momento che non v'è alcuna configurazione aggiuntiva coinvolti.

Se questo è solo per te (soprattutto se potresti finire per accedere a più repository dallo stesso server), potrebbe essere bello avere il nickname dell'host SSH per salvare un po 'di digitazione.

2

è spiegato in dettaglio qui: https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

Utilizzando un para "host" in ~/.ssh/config consente di incapsulare bene tutto questo all'interno di ssh e dare una breve, facile da ricordare, nome. Esempio:

host gitolite 
    user git 
    hostname a.long.server.name.or.annoying.IP.address 
    port 22 
    identityfile ~/.ssh/id_rsa 

Ora si può semplicemente utilizzare l'unica parola gitolite (che è l'alias host abbiamo definito qui) e SSH dedurre tutti quei dettagli definiti sotto di essa - basta dire ssh gitolite e git clone gitolite: reponame e le cose funzioneranno.