git remote add con un'altra porta SSH


336

In Git, come posso aggiungere un server di origine remoto quando il mio host utilizza una porta SSH diversa?

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

Risposte:


573

Puoi fare solo questo:

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

1234 è la porta SSH utilizzata


10
Grazie. Solo un complemento: nella parte path, usa il percorso assoluto, non un percorso relativo alla home directory dell'utente ...
Snicolas,

@Snicolas: Perché non usare un percorso relativo?
Hannes,

12
@Sincolas Funziona se hai il repository nella directory home degli utenti: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / esempio . btw: ottieni un <name> .git repo dal clone git --bare <indirizzo>
MartinL

@Jameo Si tratta di un percorso assoluto.
venerdì

48
Si noti che non funzionerà se si rimuove il protocollo. cioè se provi quanto segue, non funzionerà. git remote add origin user@host:1234/srv/git/example
Bijay Rungta,

137

Devi modificare il tuo file ~ / .ssh / config. Aggiungi qualcosa di simile al seguente:

Host example.com
    Port 1234

Una rapida ricerca su Google mostra alcune diverse risorse che lo spiegano più in dettaglio di me.


16
Ha funzionato per me. Mi piace questo approccio meglio che inserirlo nel telecomando git. Grazie! Non è necessario specificare un percorso assoluto in questo modo.
Michael van Rooijen,

Funziona benissimo. Inoltre in questo modo posso avere una chiave specifica anziché l'id_rsa predefinito. Non solo, il mio server è esigente e più o meno devi averlo abbastanza rapidamente che non riesce se includi la password. Quindi uso anche io PasswordAuthentication no.
Alexis Wilke,

4
È meglio averlo nel telecomando piuttosto che nasconderlo nel file di configurazione in questo modo: quando hai tutto in un solo posto non puoi mai dimenticare il diverso numero di porta e puoi semplicemente copiare e incollare l'URL per chiunque altro.
Marc

1
@MarcH In realtà dipende dalla situazione. Mi piace usare numeri di porta casuali sulle mie istanze VPS. Avere la porta all'interno del file di configurazione è un modo in cui è possibile trattenere tali informazioni dai collaboratori (quando si hanno più telecomandi, l'host remoto di distribuzione è diverso dal repository del codice sorgente interno).
Ragunath Jawahar,

@RagunathJawahar Non credo che l'uso di numeri di porta casuali sia un caso d'uso molto comune.
MarcH,

29

La migliore risposta non funziona per me. Mi serviva ssh://dall'inizio.

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

Per quelli di voi che modificano il file ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
Perfetto. Una domanda però, come posso fare per i sottomoduli? Non sembra funzionare.
m4l490n,

11

Anziché utilizzare il ssh://prefisso del protocollo, è possibile continuare a utilizzare il modulo URL convenzionale per accedere a git su SSH, con una piccola modifica. Come promemoria, l'URL convenzionale è :

git@host:path/to/repo.git

Per specificare una porta alternativa, inserire parentesi attorno alla user@hostparte, inclusa la porta:

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

Ma se la modifica della porta è solo temporanea, puoi dire a git di usare un comando SSH diverso invece di cambiare l'URL remoto del tuo repository:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
Aggiungendo le parentesi quadre attorno a git @ host: port ha funzionato magnificamente per me. Sto usando gitlab e su quel server richiede una porta non standard ma non posso nemmeno usare il percorso assoluto del repository (non lo so). Grazie
Thomas Le,

1
Questo mi sembra il metodo più flessibile in quanto supporta percorsi relativi e non si basa su
configurazioni
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.