- Requisiti
- Opzioni per le chiavi SSH
- Rivedere le chiavi SSH
- la Generazione di una nuova coppia di chiavi SSH
- ED25519 chiavi SSH
- RSA chiavi SSH
- misure Comuni per la generazione di una coppia di chiavi SSH
- Chiavi RSA e OpenSSH da versioni 6.5 a 7.,8
- Aggiunta di una chiave SSH al vostro GitLab account
- l’Autenticazione a Due fattori (2FA)
- Prova che tutto è impostato correttamente
- non-default coppia di chiavi SSH percorsi
- Per ogni deposito chiavi SSH
- account Multipli su un singolo GitLab istanza
- Distribuire le chiavi
- Applicazioni
- Eclipse
- SSH sul GitLab server
- Opzioni per Microsoft Windows
- Risoluzione dei problemi
Git è un sistema di controllo di versione distribuito, il che significa che si può lavorare a livello locale.,Inoltre, è anche possibile condividere o “spingere” le modifiche ad altri server.GitLab supporta la comunicazione sicura tra Git e i suoi server utilizzando le chiavi SSH.
Il protocollo SSH fornisce questa sicurezza e consente di autenticarsi su theGitLab remote server senza fornire il nome utente o la password ogni volta.
Questa pagina può aiutarti a configurare le chiavi SSH sicure che puoi usare per aiutare secureconnections nei repository GitLab.
- Se hai bisogno di informazioni sulla creazione di chiavi SSH, inizia con le nostre opzioni per le chiavi SSH.,
- Se hai chiavi SSH dedicate per il tuo account GitLab, potresti essere interessato a Lavorare con percorsi di coppia di chiavi SSH non predefiniti.
- Se hai già una coppia di chiavi SSH, puoi andare su come aggiungere una chiave SSH al tuo account GitLab.
Requisiti
Per supportare SSH, GitLab richiede l’installazione del client OpenSSH, che viene preinstallato su GNU / Linux e macOS, così come su Windows 10.
Assicurati che il tuo sistema includa SSH versione 6.5 o successiva, in quanto ciò esclude lo schema di firma MD5 ora insicuro., Il seguente comando restituisce la versione di SSH installata sul sistema:
ssh -V
Mentre GitLab non supporta l’installazione su Microsoft Windows,è possibile impostare le chiavi SSH per configurare Windows come client.
Opzioni per le chiavi SSH
GitLab supporta l’uso di chiavi RSA, DSA, ECDSA ed ED25519.
- GitLab ha deprecato le chiavi DSA in GitLab 11.0.
- Come notato nella crittografia pratica con Go, i problemi di sicurezza relativi a DSA si applicano anche a ECDSA.,
Pertanto, la nostra documentazione si concentra sull’uso delle chiavi ED25519 e RSA.
Gli amministratori possono limitare le chiavi che devono essere consentite e le loro lunghezze minime.
Rivedere le chiavi SSH esistenti
Se si dispone di chiavi SSH esistenti, è possibile utilizzarle per proteggere le connessioni con GitLabrepositories., Per impostazione predefinita, le chiavi SSH sui sistemi Linux e macOS sono memorizzate nella directory home dell’utente,nella sottodirectory .ssh/
. La seguente tabella include i nomi di file predefiniti per ciascun algoritmo di chiavi SSH:
Per i consigli, vedere Opzioni per chiavi SSH.
Generazione di una nuova coppia di chiavi SSH
Se si desidera creare:
- Una chiave ED25519, leggere le chiavi SSH ED25519.
- Una chiave RSA, leggere le chiavi SSH RSA.
Chiavi SSH ED25519
Il libro Crittografia pratica con Gosuggerisce che le chiavi ED25519 sono più sicure e performanti delle chiavi RSA.,
Poiché OpenSSH 6.5 ha introdotto le chiavi SSH ED25519 nel 2014, dovrebbero essere disponibili su qualsiasi sistema operativo corrente.
È possibile creare e configurare una chiave ED25519 con il seguente comando:
ssh-keygen -t ed25519 -C "<comment>"
Il flag -C
, con un commento citato come un indirizzo email, è un modo opzionale per etichettare le chiavi SSH.
Vedrai una risposta simile a:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Per indicazioni, procedi ai passaggi comuni.,
Chiavi SSH RSA
Se si utilizzano chiavi RSA per SSH, il National Institute of Standards and Technology degli Stati Uniti raccomandache si utilizza una dimensione della chiave di almeno 2048 bits.By per impostazione predefinita, il comandossh-keygen
crea una chiave RSA a 1024 bit.,
È possibile creare e configurare una chiave RSA con il seguente comando, sostituendo, se desiderato, per il minimo raccomandato chiave dimensioni 2048
:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
-C
bandiera, con un tasso di commento come un indirizzo e-mail, facoltativo, è un modo per etichettare le chiavi SSH.
Vedrai una risposta simile a:
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
Per indicazioni, procedi ai passaggi comuni.
misure Comuni per la generazione di una coppia di chiavi SSH
Se si sta creando un ED25519 o una chiave RSA, hai iniziato con il ssh-keygen
comando.A questo punto, verrà visualizzato il seguente messaggio nella riga di comando (per ED25519 tasti):
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Se non si dispone già di una coppia di chiavi SSH e non generano una distribuzione di chiave di accettare le ha suggerito di file e directory. Il client SSH utilizza la coppia di chiavi SSH risultante senza alcuna configurazione aggiuntiva.,
In alternativa, è possibile salvare la nuova coppia di chiavi SSH in una posizione diversa.È possibile assegnare la directory e il nome del file di vostra scelta.Puoi anche dedicare quella coppia di chiavi SSH a un host specifico.
Dopo aver assegnato un file per salvare la chiave SSH, puoi impostare una passphrase per la tua chiave SSH:
Enter passphrase (empty for no passphrase):Enter same passphrase again:
In caso di successo, vedrai la conferma di dove il comandossh-keygen
ha salvato la tua identificazione e chiave privata.,
Quando necessario, è possibile aggiornare la passphrase con il seguente comando:
chiavi RSA e OpenSSH dalle versioni 6.5 alla 7.8
Prima di OpenSSH 7.8, l’impronta digitale della chiave pubblica predefinita per le chiavi RSA era basata su MD5,ed è quindi non sicura.
Se la tua versione di OpenSSH si trova tra la versione 6.5 e la versione 7.8 (inclusa),eseguissh-keygen
con l’opzione-o
per salvare le tue chiavi SSH private nel formato più secureOpenSSH.,
Se si dispone già di una coppia di chiavi SSH RSA da utilizzare con GitLab, è consigliabile aggiornarla per utilizzare il formato di crittografia delle password più sicuro. È possibile farlo con il seguente comando:
ssh-keygen -o -f ~/.ssh/id_rsa
in Alternativa, è possibile generare una nuova chiave RSA con più di crittografia sicura formato con la seguente comando:
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
ssh-keygen
pagina man, ED25519 già codifica chiavi più secureOpenSSH formato.,Aggiunta di una chiave SSH al tuo account GitLab
Ora puoi copiare la chiave SSH creata nel tuo account GitLab. Per fare ciò, segui questi passaggi:
-
Copia la tua chiave SSH pubblica in una posizione che salva le informazioni in formato testo.,Le seguenti opzioni salva le informazioni per ED25519 chiavi della clipboardfor il noto sistema operativo:
macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux (richiede il
xclip
pacchetto):xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash su Windows:
cat ~/.ssh/id_ed25519.pub | clip
Se si sta utilizzando una chiave RSA, sostituto di conseguenza.
- Vai a
o all’URL dell’istanza GitLab locale e accedi.,
- Seleziona il tuo avatar nell’angolo in alto a destra e fai clic su Impostazioni
- Fai clic sui tasti SSH.
- Incolla la chiave pubblica copiata nella casella di testo Chiave.
- Assicurati che la tua chiave includa un nome descrittivo nella casella di testo del titolo, ad esempio Work Laptop o Workstation Home.
- Includere una data di scadenza (opzionale) per la chiave nella sezione “Scade a”. (Introdotto in GitLab 12.9.)
- Fare clic sul pulsante Aggiungi chiave.
Le chiavi SSH “scadute” utilizzando questa procedura sono valide nei flussi di lavoro di GitLab.,Poiché la data di scadenza configurata da GitLab non è inclusa nella chiave SSH stessa,è comunque possibile esportare le chiavi SSH pubbliche secondo necessità.
ssh-ed25519
(o ssh-rsa
) e termina con il tuo indirizzo email.Autenticazione a due fattori (2FA)
È possibile impostare l’autenticazione a due fattori (2FA) forGit su SSH.,
Test che tutto è impostato correttamente
Per verificare se la tua chiave SSH è stato aggiunto correttamente, eseguire il followingcommand nel terminale (sostituire gitlab.com
con il dominio ofyour GitLab esempio):
ssh -T [email protected]
La prima volta che si collega GitLab via SSH, si dovrebbe verificare theauthenticity di GitLab host a cui ci si collega.Ad esempio, quando ci si connette a GitLab.com, risposta yes
per aggiungere GitLab.,com all’elenco degli host attendibili:
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
Una volta aggiunto all’elenco degli host noti, è necessario convalidare nuovamente l’autenticità dell’host GitLab. Esegui di nuovo il comando precedente e dovresti ricevere un benvenuto in GitLab, @username
! messaggio.,
Se il messaggio di benvenuto non viene visualizzata, è possibile risolvere il problema eseguendo ssh
in verbose mode con il comando seguente:
ssh -Tvvv [email protected]
Lavorare con i non-default coppia di chiavi SSH percorsi
Se si è utilizzato un non-percorso file predefinito per il tuo GitLab coppia di chiavi SSH,configurare il vostro client SSH per scegliere il vostro GitLab chiave SSH.
Per apportare queste modifiche, eseguire i seguenti comandi:
eval $(ssh-agent -s)ssh-add <path to private SSH key>
Ora salvare queste impostazioni nel file~/.ssh/config
., Qui sono mostrati due esempi di chiavi SSH dedicate a GitLab:
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
Le chiavi SSH pubbliche devono essere univoche per GitLab, poiché si legano al tuo account.La tua chiave SSH è l’unico identificatore che hai quando spingi il codice tramite SSH,ecco perché deve mappare in modo univoco a un singolo utente.,
Per ogni deposito chiavi SSH
Se si desidera utilizzare chiavi diverse a seconda del repository workingon, si può eseguire il seguente comando all’interno del vostro repository:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
non utilizzare l’Agente SSH e richiede almeno Git 2.10.
Più account su una singola istanza GitLab
Il metodo per repository funziona anche per l’utilizzo di più account all’interno di una singola istanza GitLab.
In alternativa, è possibile assegnare direttamente alias agli host in~.ssh/config
., SSH e, per estensione, Git non riesce ad accedere se c’è unIdentityFile
impostato al di fuori di unHost
blocco in.ssh/config
. Questo è dovuto al modo in cui SSH assemblaIdentityFile
voci e non viene modificato impostandoIdentitiesOnly
ayes
. IdentityFile
le voci devono puntare alla chiave privata di una coppia di chiavi SSH.
Host
gli alias sono definiti comeuser_1.gitlab.com
e user_2.gitlab.com
per efficienza e trasparenza., Le configurazioni avanzate sono più difficili da mantenere; l’utilizzo di questo tipo di alias facilita la comprensione quando si utilizzano altri strumenti come git remote
sotto-comandi. Ssh comprenderebbe qualsiasi stringa come aliasHost
quindiTanuki1
eTanuki2
,nonostante fornisca pochissimo contesto su dove puntano, funzionerebbe anche.,la Clonazione del gitlab
repository normalmente assomiglia a questo:
git clone [email protected]:gitlab-org/gitlab.git
Per clonare per user_1
sostituire gitlab.com
con SSH alias user_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Fissare un precedentemente clonato repository utilizzando il git remote
comando.
L’esempio seguente presuppone che il repository remoto sia aliasato comeorigin
.,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Chiavi di distribuzione
Leggere la documentazione sulle chiavi di distribuzione.
Applicazioni
Eclipse
Se si utilizza EGit, è possibile aggiungere la chiave SSH a Eclipse.
SSH sul server GitLab
GitLab si integra con il demone SSH installato dal sistema, designando un utente(in genere chiamatogit
) attraverso il quale vengono gestite tutte le richieste di accesso. Gli utenti che si connettono al server GitLab tramite SSH sono identificati dalla loro chiave SSH invece del loro nome utente.,
Le operazioni client SSH eseguite sul server GitLab vengono eseguite come thisuser. Sebbene sia possibile modificare la configurazione SSH per questo utente, ad esempio, fornire una chiave SSH privata per autenticare queste richieste, questa pratica non è supportata ed è fortemente sconsigliata in quanto presenta rischi di sicurezza significativi.
Il processo di controllo GitLab include un controllo per questa condizione e ti indirizza a questa sezione se il tuo server è configurato in questo modo, ad esempio:
Rimuovi la configurazione personalizzata non appena sei in grado di farlo., Queste personalizzazioni non sono esplicitamente supportate e potrebbero smettere di funzionare in qualsiasi momento.
Opzioni per Microsoft Windows
Se si esegue Windows 10, il Sottosistema Windows per Linux (WSL) e la sua ultima versione di WSL 2 supportano l’installazione di diverse distribuzioni Linux, tra cui i client Git e SSH.
Per le versioni correnti di Windows, è anche possibile installare i client Git e SSH con GIT per Windows.,
Gli strumenti alternativi includono:
- Cygwin
- PuttyGen
Risoluzione dei problemi
Se su Git clone viene richiesta una password come [email protected]'s password:
qualcosa non va nella configurazione SSH.,
- Assicurarsi che ha generato la vostra coppia di chiavi SSH correttamente e aggiunto il pubblico SSHkey al tuo GitLab profilo
- Cercare manualmente la registrazione chiave SSH utilizzando
ssh-agent
come documentedearlier in questo documento - Tenta di eseguire il debug di connessione eseguendo
ssh -Tv [email protected]
(sostituzioneexample.com
con il GitLab dominio)