2011-01-22 3 views
7

Vorrei clonare un repository git dai server della mia azienda al mio personal computer. L'unico modo per acces questi server da "fuori" è accedendo per ssh per 'machine1'Clona Git dal repository ssh remoto - cambia la macchina sulla rete remota prima di eseguire il comando clone

ssh [email protected] 

Purtroppo, git ist non installato su quella macchina specifica. Quindi un clone del git come

git clone ssh://[email protected]/path/to/repo <local-repo-path> 

non funziona. Quello che dovrei fare è passare a un'altra macchina "machine2" dove git è installato dopo aver effettuato l'accesso alla rete tramite "machine1". Quindi, per ottenere il clone di lavoro che avrei dovuto eseguire un comando come

ssh machine2 

prima di espletare effettivamente il comando git. C'è un modo per farlo? Forse qualcosa come un gancio pre-clone?

È possibile impacchettare in qualche modo il repository remoto in un file (patch?), Per copiare quel file sul computer locale e clonarlo da quel file?

In attesa di suggerimenti e suggerimenti!

risposta

13

È possibile eseguire questa operazione configurando un comando ssh proxy. Nota: questo presuppone che netcat sia disponibile sul server proxy; puoi sostituire netcat con uno script simile in perl o qualsiasi altra cosa se necessario.

Aggiungere il seguente al vostro ~/.ssh/config, creandolo se necessario:

Host machine1 
User yourusername 
HostName machine1.yourcompany.com 

Host machine2 
User yourusername 
ProxyCommand ssh machine1 nc %h %p 
HostName machine2.internal.network 

Ora è possibile ssh machine2 e sarà automaticamente attraverso tunnel machine1. Ciò significa che l'utilizzo di git è semplice come git clone ssh://machine2/path.

È anche possibile raggruppare il repository in un singolo file, utilizzando il comando git bundle. Questo non dovrebbe essere necessario con una corretta configurazione del proxy ssh.

+0

Questa sembra un'ottima soluzione. Sfortunatamente, netcat ovviamente non esce sulla macchina remota. È un'architettura sparc con SunOS 10. Esiste un'alternativa a netcat che potrei usare? – Deve

+1

L'unico requisito è quello di mettere insieme un semplice programma che passerà da stdin/stdout a qualche host remoto arbitrario; puoi probabilmente mettere insieme qualche semplice script in qualunque lingua di scripting ci sia, o compilare netcat o socat o qualcosa di simile e metterli nella tua home directory – bdonlan

+0

Ok, capisco cosa intendi. Sembra una sfida per me, ma farò del mio meglio. Grazie ancora! – Deve