Uso de un repositorio remoto con puerto no estándar

125

Estoy configurando mi proyecto git local para un repositorio remoto. El repositorio remoto se sirve en un puerto no estándar (4019).

Pero no funciona. En su lugar, recibo el siguiente mensaje de error:

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'

Mi configuración local de git es la siguiente :

[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

(El puerto y el host son marcadores de posición para el puerto y el host reales).

¿Qué hay de malo en mi configuración de git?

brainfck
fuente
8
Parece que si no pones explícitamente ssh://delante de la url, cree que es un formato diferente. también lo ssh://example.com:444/etc/es / etc / en example.com a través del puerto 44. Mientras que example.com:444/etc/es / 444 / etc / en example.com a través del puerto 22.
Kzqai
55
El comentario de @Kzqai es importante. es decir, si lo haces git remote set-url origin [email protected]:443/yourname/yourrepo/no funcionará. pero, si haces git remote set-url origin ssh://[email protected]:443/yourname/yourrepo/esto, funcionará
roble
Para Google-fu: tuve este problema con phabricator cuando lo configuré en un puerto no predeterminado de 2222. ¡Ahora, solucionado!
user3791372

Respuestas:

116

Si pones algo como esto en tu .ssh/config:

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

entonces deberías poder usar la sintaxis básica:

git push githost:/var/cache/git/project.git master
CB Bailey
fuente
44
Una configuración SSH podría ser una solución, pero esto me interesó, porque man git-push dice que el formato de URL ssh aceptado es ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud
1
No estoy seguro, puede ser un problema de configuración de la versión git / ssh porque traté de ingresar a una dirección ssh: // fake @ localhost: 333 / fake y obtuve (como se esperaba) "puerto 333: conexión rechazada".
CB Bailey
35
Atención a cualquiera que todavía necesite esto. La sintaxis es git clone ssh://username@hostname:333/~/repopara una ruta relativa a su directorio de inicio o git clone ssh://username@hostname:333/path/to/repopara una ruta absoluta
Brandon Wamboldt
en una máquina con Windows: c: / windows / system32 / drivers / etc / hosts para establecer un nombre de host si es necesario (por ejemplo, máquinas / servidores virtuales)
usuario3791372
¿Cómo se puede hacer esto si tengo una IP y no un nombre de host? Pregunto porque todavía no hemos vinculado nuestro nombre de host a nuestra ip.
ThisIsNotAnId
129

El método de acceso git basado en SSH se puede especificar <repo_path>/.git/configutilizando una URL completa o una sintaxis similar a SCP, como se especifica en http://git-scm.com/docs/git-clone :

Estilo URL:

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

Estilo SCP:

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

Tenga en cuenta que el estilo SCP no permite un cambio de puerto directo, sino que se basa en una ssh_configdefinición de host en su ~/.ssh/configtal como:

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

Entonces puedes probar en una shell con:

ssh my_git_host

y altere su URI de estilo SCP <repo_path>/.git/configcomo:

url = my_git_host:path/to/repo.git/
jdpf
fuente
1
Soooooo ... todo lo que realmente se necesita es agregar un ssh: // delante de la url, probablemente.
Kzqai
1
No me di cuenta de que podía especificar URL ssh o que scp (el valor predeterminado) no permitía números de puerto. Bueno saber.
Powerlord
1
scp realmente permite el número de puerto (pero la clave de opción debe ser P mayúscula):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Dibujó
1
Para mí fue suficiente para agregar ssh://a mi url. Si el protocolo no se encuentra a continuación, utiliza git puerto por defecto: 22. Gracias.
Marek Podyma
28

Prueba esto

git clone ssh://[email protected]:11111/home/git/repo.git
Ricky
fuente
1
Hola Ricky, me ha funcionado con la sintaxis git clone ssh: // user @ machine: port / path-to-repo, donde tu máquina de escribir debe ser usuario, gracias
rtrujillor
9

Esto evita su problema en lugar de solucionarlo directamente, pero recomendaría agregar un ~/.ssh/configarchivo y tener algo como esto

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

entonces puedes tener

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

Y también se puede ssh git_hosty scp git_host ...y todo saldrá bien.

Peter
fuente
7

SSH no usa la :sintaxis al especificar un puerto. La forma más fácil de hacer esto es editar su ~/.ssh/configarchivo y agregar:

Host git.host.de
  Puerto 4019

Luego especifique simplemente git.host.desin un número de puerto.

Greg Hewgill
fuente