Git On Porta SSH personalizzata


149

Il mio provider VPS mi consiglia di lasciare la mia porta SSH sul numero di porta personalizzato che assegnano di default (non 22). Il fatto è che mentre so che posso dare il numero di porta quando creo una configurazione remota, sembra che non posso fare lo stesso quando faccio un clone git. Sto usando gitolite, quindi clonare i comandi in questo modo:

git clone git@mydomain.com:gitolite-admin

C'è un modo per convertirlo all'utilizzo del numero di porta ssh personalizzato?

Vorrei anche menzionare che sto eseguendo Cygwin su Windows. Ho visto più posti che dicevano di aggiungere la porta personalizzata al ~/.ssh/configfile come

Host mydomain.com
    Port 12345

tuttavia in Cygwin, quel file non sembra esistere.


8
Il percorso del file si trova .ssh/config(non conf) nella home directory dell'utente. Non è richiesto per le operazioni di base e pertanto non esiste per impostazione predefinita. Dovrai crearlo. Prova vim ~/.ssh/config(o usa il tuo editor di testo installato preferito) per aprirlo / crearlo.
Chris Johnsen,


Su Windows per leggere /Users/USERX/.ssh/configdevi impostare il tuo HOMEambiente locale su /Users/USERX.
Kenorb,

Risposte:


328
git clone ssh://git@mydomain.com:[port]/gitolite-admin

Si noti che il numero di porta dovrebbe essere lì senza le parentesi quadre: []



6
:-) Se me lo chiedi, la sintassi dell'URL git è sporca e quanto sopra è più normalizzato
Christo

Devo ammettere che la sintassi che hai dato è più descrittiva, ma dover ricordare di aggiungere il numero di porta personalizzato è fastidioso. Configurare quel numero di porta e poi non dover ricordare che è un po 'più semplice ma a ciascuno il suo (ecco perché può essere fatto in entrambi i modi) :)
Ryanzec,

48
Si noti che non funzionerà se si rimuove il protocollo. cioè se provi quanto segue, non funzionerà. git clone git@mydomain.com:[port]/gitolite-admin
Bijay Rungta,

1
su Windows con plink, la sintassi funzionante sembra esseregit clone ssh://git@mydomain.com:port/home/user/gitolite-admin
Roman Plášil,

18

Le risposte sopra sono belle e fantastiche, ma non chiare per i nuovi utenti git come me. Quindi, dopo alcune indagini, offro questa nuova risposta.

1 qual è il problema con il modo file ssh config?

Quando il file di configurazione non esiste, è possibile crearne uno. Inoltre portil file di configurazione può includere altre opzioni di configurazione ssh: user IdentityFilee così via, il file di configurazione appare come

Host mydomain.com
    User git
    Port 12345

Se stai eseguendo Linux, assicurati che il file di configurazione debba avere un'autorizzazione rigorosa: lettura / scrittura per l'utente e non accessibile da altri

2 che dire del modo ssh url?

È bello, l'unica cosa che dovremmo sapere è che ci sono due sintassi per ssh url in git

  • sintassi standard ssh://[user@]host.xz[:port]/path/to/repo.git/
  • SCP come la sintassi [user@]host.xz:path/to/repo.git/

Per impostazione predefinita, Gitlab e Github mostreranno lo scp come l' URL di sintassi e non possiamo fornire la porta ssh personalizzata. Quindi, per cambiare la porta ssh, dobbiamo usare la sintassi standard


14

Quando vuoi un percorso relativo dalla tua home directory (su qualsiasi UNIX) usi questa strana sintassi:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

Ad esempio, se il repository si trova /home/jack/projects/jillwebsul server jill.come si sta effettuando l'accesso come jackcon l' sshdascolto sulla porta 4242:

ssh://jack@jill.com:4242/~/projects/jillweb

E quando accedi come jill(presumendo che tu abbia i permessi dei file):

ssh://jill@jill.com:4242/~jack/projects/jillweb


amico, questo era rimasto per un po 'perplesso ed era esattamente quello che dovevo sapere. sai dove è documentato?
Shaun Wilson,

@Shaun Wilson Siamo spiacenti, non ricordo bene. Ma mi ci è voluto un po 'per trovare la risposta, quindi ho pensato di condividerla qui, poiché questo era uno dei miei vicoli ciechi.
Daniel Santos,

1
Grazie! Soprattutto se si utilizza un piano di hosting condiviso, la parte ~ [utente] è importante. Questo mi ha aiutato a clonare il mio repository.
Jim Wilson

2
@ShaunWilson la specifica del percorso è un percorso UNIX standard. Se si è effettuato l'accesso a un sistema UNIX, ~ è una scorciatoia per la directory home, utile sia per risparmiare molta digitazione, sia perché la directory home potrebbe trovarsi in luoghi non standard. Quanto sopra potrebbe non funzionare su un server Windows.
Samuel Åslund,

@ Samuel Åslund Grazie, ho aggiornato la mia risposta. Mi dimentico spesso di Windows perché, ... beh, non intendo essere pacchiano, ma è orribile in confronto. Tuttavia, questa è una distinzione importante.
Daniel Santos,

9

(Aggiornamento: qualche anno dopo Google e Qwant "compagnie aeree" mi mandano ancora qui quando cerco "git ssh port di default") Un modo probabilmente migliore nelle versioni più recenti di git è usare GIT_SSH_COMMAND ENV.VAR come:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

Ciò ha l'ulteriore vantaggio di consentire qualsiasi altra opzione ssh adatta (porta, chiave privata, IPv6, dispositivo PKCS # 11, ...).

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.