Usando um repositório remoto com porta não padrão

125

Estou configurando meu projeto git local para um repositório remoto. O repositório remoto está sendo servido em uma porta não padrão (4019).

Mas isso não funciona. Em vez disso, recebo a seguinte mensagem de erro:

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://[email protected]:4019/var/cache/git/project.git'

Minha configuração local do git é a seguinte :

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

(A porta e o host são espaços reservados para a porta e o host reais.)

O que há de errado com minha configuração do git?

brainfck
fonte
8
Parece que se você não colocar explicitamente ssh://na frente do URL, ele achará um formato diferente. assim ssh://example.com:444/etc/é / etc / em example.com através da porta 44. Considerando que example.com:444/etc/é / 444 / etc / example.com através da porta 22.
Kzqai
5
A observação @Kzqai é importante. ou seja, se você fizer git remote set-url origin [email protected]:443/yourname/yourrepo/isso não vai funcionar. mas, se você fizer git remote set-url origin ssh://[email protected]:443/yourname/yourrepo/esse trabalho vontade
carvalho
Para o Google-fu - eu tive esse problema com o phabricator quando o defini como uma porta não padrão 2222. Agora, resolvido!
user3791372

Respostas:

116

Se você colocar algo assim no seu .ssh/config:

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

então você poderá usar a sintaxe básica:

git push githost:/var/cache/git/project.git master
CB Bailey
fonte
4
Uma configuração SSH pode ser uma solução alternativa, mas isso me interessou, porque o man git-push diz que o formato de URL ssh aceito é ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud
1
Não tenho certeza, pode ser um problema de versão da configuração git / ssh porque tentei enviar para um endereço ssh: // fake @ localhost: 333 / fake e obtive (como esperado) a "porta 333: Conexão recusada".
CB Bailey
35
Atenção quem ainda precisa disso. A sintaxe é git clone ssh://username@hostname:333/~/repopara um caminho relativo para o diretório home ou git clone ssh://username@hostname:333/path/to/repopara um caminho absoluto
Brandon Wamboldt
em uma máquina Windows: c: / windows / system32 / drivers / etc / hosts para definir um nome de host, se necessário (por exemplo, máquinas virtuais / servidores)
user3791372
Como isso pode ser feito se eu tiver um IP e não um nome de host? Pergunto porque ainda não vinculamos nosso nome de host ao nosso ip.
ThisIsNotAnId 22/02/19
129

O método de acesso git baseado em SSH pode ser especificado <repo_path>/.git/configusando uma URL completa ou uma sintaxe semelhante ao SCP, conforme especificado em http://git-scm.com/docs/git-clone :

Estilo do URL:

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

Estilo SCP:

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

Observe que o estilo SCP não permite uma alteração direta de porta, baseando-se em uma ssh_configdefinição de host ~/.ssh/configcomo:

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

Então você pode testar em um shell com:

ssh my_git_host

e altere seu URI no estilo SCP <repo_path>/.git/configcomo:

url = my_git_host:path/to/repo.git/
jdpf
fonte
1
Soooooo ... tudo o que é realmente necessário é adicionar um ssh: // na frente do URL, provavelmente.
26711 Kzqai
1
Não sabia que era possível especificar ssh urls ou que o scp (o padrão) não permitia números de porta. Bom saber.
Powerlord
1
O scp realmente permite o número da porta (mas a chave da opção deve ser P maiúsculo):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew
1
Para mim, foi o suficiente para adicionar ssh://ao meu url. Se o protocolo está faltando então usa git porta padrão: 22. Obrigado.
Marek Podyma 17/05
28

Tente isto

git clone ssh://[email protected]:11111/home/git/repo.git
Ricky
fonte
1
Oi Ricky, ele tem trabalhado para mim com a sintaxe git clone ssh: // usuário @ máquina: porta / caminho-de-repo, onde você escreve máquina deve ser utilizador, graças
rtrujillor
9

Isso evita o seu problema, em vez de corrigi-lo diretamente, mas eu recomendo adicionar um ~/.ssh/configarquivo e ter algo parecido com isto

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

então você pode ter

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

e você também pode ssh git_hoste scp git_host ...e tudo vai dar certo.

Peter
fonte
7

O SSH não usa a :sintaxe ao especificar uma porta. A maneira mais fácil de fazer isso é editar seu~/.ssh/config arquivo e adicionar:

Host git.host.de
  Porta 4019

Em seguida, especifique apenas git.host.desem um número de porta.

Greg Hewgill
fonte