Especificar puerto SSH para Git

18

Utilizo un puerto ssh no estándar (1234) para la mayoría de los servidores a los que me conecto. Entonces, en mi archivo de configuración ssh tengo:

Port 1234

Pero github.com usa el puerto 22. Cuando intento conectarme a github, obviamente intenta usar el puerto 1234. En este momento tengo que editar mi configuración ssh para que todo funcione.

Aquí hay un fragmento de mi configuración de git:

[remote "origin"]
        url = [email protected]:asdf/asdf.git
James Ward
fuente

Respuestas:

27

Solo eche un vistazo a cómo configurar su archivo ~ / .ssh / config correctamente (man 5 ssh_config). Puede especificar diferentes configuraciones para diferentes hosts fácilmente. Para resolver su problema, establecería

Host github.com
Port 22
Host *
Port 1234

Eche un vistazo a la página del manual ssh_config, explica todo lo que necesita saber en las primeras páginas.

narciso
fuente
24

Configurar una sección en ~/.ssh/configes una buena solución, pero puede ser útil conocer otro método.

La sintaxis común similar a scp de user@host:pathno tiene un lugar para un puerto, pero Git también admite un ssh:esquema de URL que puede usarse para especificar el puerto:

ssh://[email protected]:22/asdf/asdf.git

Si bien una ssh:URL admite la especificación del puerto, no admite rutas relativas (por ejemplo, no hay un equivalente directo a la sintaxis similar a scp de user@host:pathwhere pathno comienza con una barra inclinada).

GitHub trata las rutas relativas y absolutas de manera idéntica, por lo que funciona para ellas, pero puede no funcionar para todos los repositorios de Git basados ​​en SSH. Para un alojamiento simple basado en SSH, es posible que deba insertar /home/username/o /Users/username/al cambiar de rutas relativas a absolutas. Es posible que algunos sistemas de alojamiento no manejen rutas absolutas (aunque tendería a llamar a esa falta de soporte un error).

Chris Johnsen
fuente
Gracias Chris Me gusta más esta ruta porque no requiere mucking con mi configuración ssh. ¡Gracias!
James Ward el
1
para su información, si el servidor tiene un repositorio "desnudo", la cadena de conexión se parecería más ssh://[email protected]:22/asdf/asdf(sin el .git)
Xeoncross
3

(Me encanta cuando encuentro la respuesta justo después de preguntarla).

Modifiqué mi configuración ssh para especificar el puerto para cada host en lugar de ser una configuración global:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22
James Ward
fuente