git remote add con otro puerto SSH

336

En Git, ¿cómo puedo agregar un servidor de origen remoto cuando mi host usa un puerto SSH diferente?

git remote add origin ssh://user@host/srv/git/example
Juan Pablo
fuente

Respuestas:

573

Puedes hacer esto:

git remote add origin ssh://user@host:1234/srv/git/example

1234 ¿se está utilizando el puerto ssh?

igorw
fuente
10
Gracias. Solo un complemento: en la parte de la ruta, use la ruta absoluta, no una ruta relativa al directorio de inicio del usuario ...
Snicolas
@Snicolas: ¿Por qué no se debe usar una ruta relativa?
Hannes
12
@Sincolas Funciona si tiene el repositorio en el directorio de inicio de los usuarios: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / ejemplo.git . por cierto: obtienes un <name> .git repo por git clone --bare <adress>
MartinL
@Jameo It es una ruta absoluta.
igorw
48
Tenga en cuenta que no funcionará si elimina el protocolo. es decir, si intenta lo siguiente, no funcionará. git remote add origin user@host:1234/srv/git/example
Bijay Rungta
137

Necesita editar su archivo ~ / .ssh / config. Agregue algo como lo siguiente:

Host example.com
    Port 1234

Una búsqueda rápida en Google muestra algunos recursos diferentes que lo explican con más detalle que yo.

bramp
fuente
16
A mí me funcionó. Me gusta este enfoque mejor que pegarlo en el control remoto de git. ¡Gracias! No es necesario especificar una ruta absoluta de esta manera.
Michael van Rooijen
Esto funciona muy bien. También de esa manera puedo tener una clave específica en lugar de la id_rsa predeterminada. No solo eso, mi servidor es exigente y más o menos tienes que tenerlo lo suficientemente rápido, lo que falla si incluye una contraseña. Así que también uso el PasswordAuthentication no.
Alexis Wilke
44
Es mejor tenerlo en el control remoto que ocultarlo en el archivo de configuración de esta manera: cuando tiene todo en un solo lugar, nunca puede olvidarse del número de puerto diferente y simplemente puede copiar y pegar la URL para que cualquier otra persona lo use.
MarcH
1
@MarcH De hecho, depende de la situación. Me gusta usar números de puerto aleatorios en mis instancias de VPS. Tener el puerto dentro del archivo de configuración es una forma en que puede retener esa información de los colaboradores (es decir, cuando tiene varios controles remotos, el host remoto de implementación es diferente del repositorio interno de código fuente).
Ragunath Jawahar
@RagunathJawahar No creo que usar números de puerto aleatorios sea un caso de uso muy común.
MarcH
29

La mejor respuesta no me funciona. Necesitaba ssh://desde el principio.

# does not work
git remote set-url origin [email protected]:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://[email protected]:10000/aaa/bbbb/ccc.git
kujiy
fuente
17

Para aquellos de ustedes editando el ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
fuente
1
Perfecto. Una pregunta, sin embargo, ¿cómo hago esto para submódulos? No parece funcionar.
m4l490n
11

En lugar de usar el ssh://prefijo de protocolo, puede continuar usando el formulario de URL convencional para acceder a git a través de SSH, con un pequeño cambio. Como recordatorio, la URL convencional es :

git@host:path/to/repo.git

Para especificar un puerto alternativo, ponga corchetes alrededor de la user@hostparte, incluido el puerto:

[git@host:port]:path/to/repo.git

Pero si el cambio de puerto es meramente temporal, puede decirle a git que use un comando SSH diferente en lugar de cambiar la URL remota de su repositorio:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance
Konrad Rudolph
fuente
2
Agregar los corchetes alrededor del git @ host: port funcionó muy bien para mí. Estoy usando gitlab y en ese servidor requiere un puerto no estándar, pero tampoco puedo usar la ruta absoluta al repositorio (no lo sé). Gracias
Thomas Le
1
Este parece ser el método más flexible para mí, ya que es compatible con rutas relativas y no se basa en configuraciones ssh
user2882096