Utilizzo di un repository remoto con porta non standard


125

Sto configurando il mio progetto git locale per un repository remoto. Il repository remoto viene servito su una porta non standard (4019).

Ma non funziona Invece ricevo il seguente messaggio di errore:

ssh: connect to host git.host.de:4019 port 22: Connection refused
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git'

La mia configurazione git locale è la seguente :

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = ssh://root@git.host.de:4019/var/cache/git/project.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

(La porta e l'host sono segnaposto per la porta e l'host effettivi.)

Cosa c'è di sbagliato nella mia configurazione di git?


8
Sembra che se non ti metti esplicitamente ssh://di fronte all'URL, pensa che sia un formato diverso. così ssh://example.com:444/etc/è / etc / on example.com tramite la porta 44. Considerando che example.com:444/etc/è / 444 / etc / on example.com tramite la porta 22.
Kzqai,

5
L'osservazione di @Kzqai è importante. cioè se lo fai git remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/non funzionerà. ma, se lo fai git remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/, funzionerà
quercia,

Per Google-Fu - ho avuto questo problema con phabricator quando l'ho impostato su una porta non predefinita di 2222. Ora, risolto!
user3791372,

Risposte:


116

Se metti qualcosa del genere nel tuo .ssh/config:

Host githost
HostName git.host.de
Port 4019
User root

allora dovresti essere in grado di usare la sintassi di base:

git push githost:/var/cache/git/project.git master

4
Una configurazione SSH potrebbe essere una soluzione alternativa, ma questo mi ha interessato, perché man git-push dice che il formato ssh url accettato è ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud,

1
Non sono sicuro, potrebbe trattarsi di un problema di configurazione della versione git / ssh perché ho provato a inviare un indirizzo ssh: // fake @ localhost: 333 / fake e ho ottenuto (come previsto) "porta 333: connessione rifiutata".
CB Bailey,

35
Attenzione a chiunque abbia ancora bisogno di questo. La sintassi è git clone ssh://username@hostname:333/~/repoper un percorso relativo alla tua home directory o git clone ssh://username@hostname:333/path/to/repoper un percorso assoluto
Brandon Wamboldt,

su una macchina Windows: c: / windows / system32 / drivers / etc / hosts per impostare un nome host se necessario (ad es. macchine virtuali / server)
user3791372,

Come posso farlo se ho un IP e non un nome host? Lo chiedo perché non abbiamo ancora collegato il nostro nome host al nostro IP.
ThisIsNotAnId

129

Il metodo di accesso git basato su SSH può essere specificato <repo_path>/.git/configutilizzando un URL completo o una sintassi simile a SCP, come specificato in http://git-scm.com/docs/git-clone :

Stile URL:

url = ssh://[user@]host.xz[:port]/path/to/repo.git/

Stile SCP:

url = [user@]host.xz:path/to/repo.git/

Si noti che lo stile SCP non consente una modifica diretta della porta, basandosi invece su una ssh_configdefinizione host nella propria ~/.ssh/configquale:

Host my_git_host
HostName git.some.host.org
Port 24589
User not_a_root_user

Quindi puoi testare in una shell con:

ssh my_git_host

e modifica il tuo URI in stile SCP <repo_path>/.git/configcome:

url = my_git_host:path/to/repo.git/

1
Soooooo ... tutto ciò che è veramente necessario è aggiungere un ssh: // di fronte all'URL, probabilmente.
Kzqai,

1
Non ho realizzato che potresti specificare ssh urls o che scp (impostazione predefinita) non ha permesso i numeri di porta. Buono a sapersi.
Powerlord,

1
scp in realtà consente il numero di porta (ma la chiave dell'opzione deve essere la P maiuscola):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Disegnato

1
Per me è stato sufficiente aggiungere ssh://al mio url. Se il protocollo manca poi usi git porta di default: 22. Grazie.
Marek Podyma,

28

Prova questo

git clone ssh://user@32.242.111.21:11111/home/git/repo.git

1
Ciao Ricky, ha funzionato per me con la sintassi git clone ssh: // user @ machine: port / path-to-repo, dove scrivi la macchina deve essere utente, grazie
rtrujillor,

9

Questo evita il tuo problema piuttosto che risolverlo direttamente, ma ti consiglio di aggiungere un ~/.ssh/configfile e avere qualcosa del genere

Host git_host
HostName git.host.de
User root
Port 4019

allora puoi avere

url = git_host:/var/cache/git/project.git

e puoi anche ssh git_hoste scp git_host ...e tutto funzionerà.


7

SSH non utilizza la :sintassi quando si specifica una porta. Il modo più semplice per farlo è modificare il tuo~/.ssh/config file e aggiungere:

Host git.host.de
  Porta 4019

Quindi specificare solo git.host.desenza un numero di porta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.