Specifica la porta SSH per Git


18

Uso una porta ssh non standard (1234) per la maggior parte dei server a cui mi connetto. Quindi nel mio file di configurazione ssh ho:

Port 1234

Ma github.com usa la porta 22. Quando provo a connettermi a github, ovviamente cerca di usare la porta 1234. In questo momento devo modificare la mia configurazione ssh per far funzionare le cose.

Ecco uno snippet dal mio git config:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

Risposte:


27

Dai un'occhiata a come impostare correttamente il tuo file ~ / .ssh / config (man 5 ssh_config). È possibile specificare facilmente impostazioni diverse per host diversi. Per risolvere il tuo problema devi impostare

Host github.com
Port 22
Host *
Port 1234

Dai un'occhiata alla pagina di manuale di ssh_config, spiega tutto ciò che devi sapere nelle prime pagine.


24

L'impostazione di una sezione in ~/.ssh/configè un'ottima soluzione, ma può essere utile conoscere un altro metodo.

La comune sintassi simile a scp di user@host:pathnon ha un posto per una porta, ma Git supporta anche uno ssh:schema URL che può essere usato per specificare la porta:

ssh://git@github.com:22/asdf/asdf.git

Mentre un ssh:URL supporta la specifica della porta, non supporta percorsi relativi (ad esempio non esiste un equivalente diretto alla sintassi simile a scp di user@host:pathdove pathnon inizia con una barra).

GitHub tratta i percorsi relativi e assoluti in modo identico, quindi funziona per loro, ma potrebbe non funzionare per tutti i repository Git basati su SSH. Per un semplice hosting basato su SSH, potrebbe essere necessario inserire /home/username/o /Users/username/quando si passa da percorsi relativi a percorsi assoluti. Alcuni sistemi di hosting potrebbero non gestire affatto i percorsi assoluti (anche se tenderei a chiamare tale mancanza di supporto un bug).


Grazie Chris. Mi piace molto questo percorso perché non richiede il muck con la mia configurazione SSH. Grazie!
James Ward,

1
a proposito, se il server ha un repository "bare", la stringa di connessione sarebbe più simile ssh://git@github.com:22/asdf/asdf(senza il .git)
Xeoncross

3

(Adoro quando trovo la risposta subito dopo averlo chiesto.)

Ho modificato la mia configurazione ssh per specificare la porta per ciascun host anziché essere un'impostazione globale:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

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.