- wymagania
- opcje dla kluczy SSH
- przegląd istniejących kluczy SSH
- generowanie nowej pary kluczy SSH
- ED25519 klucze SSH
- klucze SSH RSA
- typowe kroki generowania pary kluczy SSH
- klucze RSA i OpenSSH od wersji 6.5 do 7.,8
- dodawanie klucza SSH do konta GitLab
- uwierzytelnianie dwuskładnikowe (2FA)
- sprawdzanie, czy wszystko jest poprawnie skonfigurowane
- praca z nie domyślnymi ścieżkami par kluczy SSH
- dla repozytorium klucze SSH
- wiele kont na jednej instancji GitLab
- wdrażanie kluczy
- Aplikacje
- Eclipse
- ssh na serwerze GitLab
- opcje dla Microsoft Windows
- rozwiązywanie problemów
Git jest rozproszonym systemem kontroli wersji, co oznacza, że możesz pracować lokalnie.,Ponadto możesz również udostępniać lub „wypychać” swoje zmiany na innych serwerach.GitLab obsługuje bezpieczną komunikację pomiędzy Gitem a jego serwerami za pomocą kluczy SSH.
protokół SSH zapewnia to Bezpieczeństwo i pozwala uwierzytelnić się na zdalnym serwerze theGitLab bez każdorazowego podawania nazwy użytkownika lub hasła.
Ta strona może pomóc ci skonfigurować bezpieczne klucze SSH, których możesz użyć do zabezpieczenia połączeń z repozytoriami GitLab.
- jeśli potrzebujesz informacji na temat tworzenia kluczy SSH, zacznij od naszych opcji dla kluczy SSH.,
- Jeśli masz klucze SSH dedykowane dla Twojego konta GitLab, możesz być zainteresowany pracą z nie domyślnymi ścieżkami par kluczy SSH.
- Jeśli masz już parę kluczy SSH, możesz przejść do sekcji Jak dodać klucz SSH do swojego konta GitLab.
wymagania
aby obsługiwać SSH, GitLab wymaga instalacji klienta OpenSSH, który jest preinstalowany na GNU/Linux i macOS, a także na Windows 10.
upewnij się, że Twój system zawiera SSH w wersji 6.5 lub nowszej, ponieważ wyklucza to teraz niezabezpieczony schemat podpisu MD5., Poniższe polecenie zwraca wersję ssh zainstalowaną w Twoim systemie:
ssh -V
podczas gdy GitLab nie obsługuje instalacji w systemie Microsoft Windows,możesz ustawić klucze SSH, aby ustawić Windows jako klienta.
opcje dla kluczy SSH
GitLab obsługuje klucze RSA, DSA, ECDSA i ED25519.
- GitLab ma przestarzałe klucze DSA w GitLab 11.0.
- jak zauważono w praktycznej kryptografii z Go, kwestie bezpieczeństwa związane z DSA dotyczą również ECDSA.,
dlatego nasza dokumentacja koncentruje się na użyciu kluczy ED25519 i RSA.
administratorzy mogą ograniczyć, które klucze powinny być dozwolone i ich minimalne długości.
przejrzyj istniejące klucze SSH
Jeśli masz istniejące klucze SSH, możesz być w stanie ich użyć do zabezpieczenia połączeń z GitLabrepositories., Domyślnie klucze SSH w systemach Linux i macOS są przechowywane w katalogu domowym użytkownika, w podkatalogu .ssh/
. Poniższa tabela zawiera domyślne nazwy plików dla każdego algorytmu klucza SSH:
zalecenia można znaleźć w options for SSH keys.
generowanie nowej pary kluczy SSH
Jeśli chcesz utworzyć:
- klucz ED25519, przeczytaj klucze SSH ED25519.
- klucz RSA, odczyt kluczy RSA SSH.
ED25519 klucze SSH
książka praktyczna Kryptografia z Gosuggests, że klucze ED25519 są bezpieczniejsze i bardziej wydajne niż klucze RSA.,
ponieważ w 2014 roku OpenSSH 6.5 wprowadził klucze SSH ED25519, powinny one być dostępne w każdym aktualnie działającym systemie.
możesz utworzyć i skonfigurować klucz ED25519 za pomocą następującego polecenia:
ssh-keygen -t ed25519 -C "<comment>"
flaga-C
, z cytowanym komentarzem, takim jak adres e-mail, jest opcjonalnym sposobem oznaczania kluczy SSH.
zobaczysz odpowiedź podobną do:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
aby uzyskać wskazówki, przejdź do wspólnych kroków.,
klucze RSA SSH
Jeśli używasz kluczy RSA dla SSH, Amerykański Narodowy Instytut Standardów i technologii zaleca użycie klucza o rozmiarze co najmniej 2048 bits.By domyślnie poleceniessh-keygen
tworzy 1024-bitowy klucz RSA.,
możesz utworzyć i skonfigurować klucz RSA za pomocą następującego polecenia, zastępując w razie potrzeby minimalny zalecany rozmiar klucza 2048
:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
-C
flaga z cytowanym komentarzem, takim jak adres e-mail, jest opcjonalnym sposobem oznaczania kluczy SSH.
zobaczysz odpowiedź podobną do:
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
aby uzyskać wskazówki, przejdź do wspólnych kroków.
typowe kroki generowania pary kluczy SSH
niezależnie od tego, czy tworzysz klucz ED25519, czy RSA, zaczynasz od ssh-keygen
command.At w tym punkcie w wierszu poleceń (dla kluczy ED25519) zobaczysz następujący komunikat:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Jeśli nie masz jeszcze pary kluczy SSH i nie generujesz klucza wdrożenia,Zaakceptuj sugerowany plik i katalog. Klient SSH używa uzyskanej pary kluczy SSH bez dodatkowej konfiguracji.,
Alternatywnie możesz zapisać nową parę kluczy SSH w innej lokalizacji.Możesz przypisać wybrany katalog i nazwę pliku.Możesz również zadedykować tę parę kluczy SSH konkretnemu hostowi.
po przypisaniu pliku do zapisu klucza SSH, możesz ustawić hasło upa dla klucza SSH:
Enter passphrase (empty for no passphrase):Enter same passphrase again:
Jeśli się powiedzie, zobaczysz potwierdzenie, gdzie poleceniassh-keygen
zapisały Twój klucz identyfikacyjny i prywatny.,
w razie potrzeby możesz zaktualizować hasło za pomocą następującego polecenia:
ssh-keygen -p -f /path/to/ssh_key
klucze RSA i OpenSSH z wersji 6.5 do 7.8
przed OpenSSH 7.8 domyślny odcisk klucza publicznego dla kluczy RSA był oparty na MD5 i dlatego nie jest bezpieczny.
Jeśli Twoja wersja OpenSSH leży pomiędzy wersją 6.5 A 7.8 (włącznie),Uruchom ssh-keygen
z opcją -o
, aby zapisać swoje prywatne klucze SSH w bardziej bezpiecznym formacie secureOpenSSH.,
Jeśli masz już parę kluczy RSA SSH do użycia z GitLab, rozważ uaktualnienie itto używać bardziej bezpiecznego formatu szyfrowania haseł. Możesz to zrobić za pomocą następującego polecenia:
ssh-keygen -o -f ~/.ssh/id_rsa
Alternatywnie możesz wygenerować nowy klucz RSA z bezpieczniejszym formatem szyfrowania za pomocą następującego polecenia:
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
ssh-keygen
, ed25519 szyfruje już klucze do bardziej bezpiecznego formatu.,dodawanie klucza SSH do konta GitLab
teraz możesz skopiować utworzony klucz SSH na swoje konto GitLab. Aby to zrobić, wykonaj następujące kroki:
-
skopiuj publiczny klucz SSH do lokalizacji, która zapisuje informacje w formacie tekstowym.,Następujące opcje zapisują informacje o kluczach ED25519 do schowka dla notowanego systemu operacyjnego:
macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux (wymaga pakietu
xclip
):xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash w systemie Windows:
cat ~/.ssh/id_ed25519.pub | clip
Jeśli używasz klucza RSA, zastąp go odpowiednio.
lub lokalnego adresu URL instancji GitLab i zaloguj się.,klucze SSH, które „wygasły” przy użyciu tej procedury, są ważne w przepływach pracy GitLab.,Ponieważ skonfigurowana w GitLab data wygaśnięcia nie jest zawarta w samym kluczu SSH, możesz nadal eksportować publiczne klucze SSH w razie potrzeby.
ssh-ed25519
(lub ssh-rsa
), a kończąc na twoim adresie e-mail.uwierzytelnianie dwuskładnikowe (2FA)
można skonfigurować uwierzytelnianie dwuskładnikowe (2FA) przez SSH.,
testowanie, czy wszystko jest poprawnie skonfigurowane
aby sprawdzić, czy twój klucz SSH został poprawnie dodany, uruchom następujące polecenie w terminalu (zastąp gitlab.com
domeną Twojej instancji GitLab):
ssh -T [email protected]
przy pierwszym połączeniu z GitLab przez SSH, powinieneś zweryfikować autentyczność hosta GitLab, z którym się łączysz.Na przykład podczas łączenia się z GitLab.com, odpowiedź yes
aby dodać GitLab.,com do listy zaufanych hostów:
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.
Po dodaniu do listy znanych hostów, powinieneś ponownie sprawdzić autentyczność hosta GitLab. Uruchom powyższą komendę, a otrzymasz powitanie na GitLab, @username
! wiadomość.,
Jeśli komunikat powitalny nie pojawi się, możesz rozwiązać problem,uruchamiając ssh
w trybie szczegółowym za pomocą następującego polecenia:
ssh -Tvvv [email protected]
pracując z nie domyślnymi ścieżkami par kluczy SSH
jeśli użyłeś niestandardowa ścieżka do pliku dla pary kluczy SSH GitLab, skonfiguruj klienta SSH tak, aby wskazywał na prywatny klucz SSH GitLab.
aby wprowadzić te zmiany, uruchom następujące polecenia:
eval $(ssh-agent -s)ssh-add <path to private SSH key>
teraz zapisz te ustawienia w pliku~/.ssh/config
., Dwa przykłady kluczy SSH dedykowanych GitLab są tutaj:
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
publiczne klucze SSH muszą być unikalne dla GitLab, ponieważ wiążą się z Twoim kontem.Twój klucz SSH jest jedynym identyfikatorem, który posiadasz podczas przesuwania kodu przez SSH,dlatego musi on jednoznacznie mapować do jednego użytkownika.,
klucze SSH dla każdego repozytorium
Jeśli chcesz używać różnych kluczy w zależności od repozytorium, które pracujesz, możesz wydać następujące polecenie w swoim repozytorium:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
To nie używa agenta SSH i wymaga co najmniej Git 2.10.
wiele kont na jednej instancji GitLab
metoda per-repozytorium działa również przy użyciu wielu kont w jednej instancji GitLab.
alternatywnie, możliwe jest bezpośrednie przypisanie aliasów do hostów w ~.ssh/config
., SSH i, przez rozszerzenie, Git nie zaloguje się, jeśli istnieje IdentityFile
ustawiony pozaHost
blok.ssh/config
. Jest to spowodowane tym, jak SSH montujeIdentityFile
wpisy i nie jest zmieniany przez IdentitiesOnly
nayes
. IdentityFile
wpisy powinny wskazywać na klucz prywatny pary kluczy SSH.
Host
aliasy są zdefiniowane jako user_1.gitlab.com
Iuser_2.gitlab.com
dla wydajności i przejrzystości., Zaawansowane konfiguracje są trudniejsze do utrzymania; używanie tego typu aliasów ułatwia zrozumienie innych narzędzi, takich jak git remote
pod-polecenia. Ssh powinien rozumieć dowolny ciąg jakoHost
alias w ten sposóbTanuki1
ITanuki2
,pomimo podania bardzo małego kontekstu co do tego, gdzie wskazują, również by zadziałał.,klonowanie repozytorium gitlab
zwykle wygląda tak:
git clone [email protected]:gitlab-org/gitlab.git
aby sklonować je dla user_1
, zastąp gitlab.com
za pomocą aliasu SSHuser_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
napraw wcześniej sklonowane repozytorium przy użyciu polecenia git remote
.
poniższy przykład zakłada, że zdalne repozytorium jest aliasowane jako origin
.,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Klucze wdrażania
przeczytaj dokumentację dotyczącą kluczy wdrażania.
Aplikacje
Eclipse
Jeśli używasz EGit, możesz dodać swój klucz SSH do Eclipse.
SSH na serwerze GitLab
GitLab integruje się z zainstalowanym w systemie demonem SSH, wyznaczając użytkownika(Zwykle o nazwiegit
), za pomocą którego obsługiwane są wszystkie żądania dostępu. Użytkownicy łączący się z serwerem GitLab przez SSH są identyfikowani przez ich klucz SSH zamiast nazwy użytkownika.,
operacje klienta SSH wykonywane na serwerze GitLab są wykonywane jako thisuser. Chociaż możliwe jest zmodyfikowanie konfiguracji SSH dla tego użytkownika,aby np. zapewnić prywatny klucz SSH do uwierzytelniania tych żądań, praktyka ta nie jest obsługiwana i jest zdecydowanie odradzana, ponieważ stwarza znaczne ryzyko dla bezpieczeństwa.
proces sprawdzania GitLab zawiera sprawdzenie tego warunku i kieruje cię do tej sekcji, jeśli twój serwer jest skonfigurowany w ten sposób, na przykład:
usuń konfigurację niestandardową, gdy tylko będziesz mógł., Te dostosowania nie są wyraźnie obsługiwane i mogą przestać działać w dowolnym momencie.
opcje dla Microsoft Windows
Jeśli używasz systemu Windows 10, Podsystem Windows dla Linuksa (WSL) i jego najnowsza wersja WSL 2 obsługują instalację różnych dystrybucji Linuksa, w tym klientów Git i SSH.
dla aktualnych wersji systemu Windows, można również zainstalować klientów Git i SSH withGit Dla Windows.,
alternatywne narzędzia to:
- Cygwin
- PuttyGen
Rozwiązywanie problemów
Jeśli w Git clone pojawi się monit o hasło takie jak[email protected]'s password:
coś jest nie tak z Twoją konfiguracją SSH.,
- upewnij się, że poprawnie wygenerowałeś swoją parę kluczy SSH i dodałeś publiczny klucz SSH do swojego profilu GitLab
- spróbuj ręcznie zarejestrować swój prywatny klucz SSH używając
ssh-agent
jako documentedearlier w tym dokumencie - spróbuj debugować połączenie, uruchamiając
ssh -Tv [email protected]
(zastępującexample.com
z twoją domeną GitLab)