• 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.,
brak dostępnej dokumentacji sugeruje, że ED25519 jest bezpieczniejszy. Jeśli używasz klucza RSA, Amerykański Narodowy Instytut Nauki i Technologii w publikacji 800-57 Część 3 (PDF) zaleca rozmiar klucza co najmniej 2048 bitów.

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.

notejeśli masz OpenSSH w wersji 7.,8 lub poniżej, rozważ problemy związane z kodowaniem.

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]"

Uwaga odnotowana na stronie podręcznika 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:

  1. 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 pakietuxclip):

    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.

  • przejdź do lub lokalnego adresu URL instancji GitLab i zaloguj się.,
  • Wybierz swój awatar w prawym górnym rogu i kliknij Ustawienia
  • kliknij klawisze SSH.
  • wklej klucz publiczny skopiowany do pola tekstowego klucza.
  • upewnij się, że klucz zawiera opisową nazwę w polu tekstowym tytuł, na przykład laptop roboczy lub stacja robocza.
  • zawiera (opcjonalną) datę wygaśnięcia klucza w sekcji „wygasa w”. (Wprowadzone w GitLab 12.9.)
  • kliknij przycisk Dodaj klawisz.
  • 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.

    notejeśli ręcznie skopiowałeś swój publiczny klucz SSH, upewnij się, że skopiowałeś cały klucz zaczynając od 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):

    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.
    noteFor GitLab.com,aby upewnić się, że łączysz się z odpowiednim serwerem, należy zapoznać się z sekcją klucze hostów. Na przykład możesz zobaczyć odcisk palca klucza ECDSA pokazany powyżej w połączonej sekcji.

    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 sshw 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 IdentityFileustawiony pozaHostblok.ssh/config. Jest to spowodowane tym, jak SSH montujeIdentityFile wpisy i nie jest zmieniany przez IdentitiesOnlynayes. IdentityFile wpisy powinny wskazywać na klucz prywatny pary kluczy SSH.

    uwaga przykład 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.comza 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ąc example.com z twoją domeną GitLab)