Odmowa dostępu (klucz publiczny) na gitlab

134

Mój problem polega na tym, że nie mogę pchać ani pobierać z GitLab. Jednak mogę klonować (przez HTTP lub SSH). Otrzymuję ten błąd, gdy próbuję pchać:

Odmowa uprawnień (publickey) fatalna: nie można odczytać ze zdalnego repozytorium

Ze wszystkich wątków, które sprawdziłem, oto co zrobiłem:

  • Skonfiguruj klucz SSH na moim komputerze i dodałem klucz publiczny do GitLab
  • Gotowe config --global dla nazwy użytkownika i adresu e-mail
  • Sklonowano przez SSH i HTTP, aby sprawdzić, czy to rozwiąże problem
  • Wykonano polecenie ssh -T [email protected]

Będziemy bardzo wdzięczni, jeśli masz jakieś wskazówki, jak rozwiązać mój problem.

Alexandre Fernandes Bartolomeu
źródło
5
biegnij, ssh -vvvv [email protected]aby sprawdzić, czy odbierze klucz SSH
Nils Werner
1
Czy dodałeś klucz SSH przez gitlab.com/profile/keys ?
Akram Fares
@ Nils Werner: Otrzymuję wiele linii, kiedy wykonuję to polecenie, ale jedną z nich jest „Uwierzytelnienie powiodło się (publickey)”
Alexandre Fernandes Bartolomeu
4
upewnij się, że nie jesteś uruchomiony sudo git clone [email protected]:project/somethiing.git, w przeciwnym razie ssh będzie szukał /root/.sshzamiast przesłanego klucza~/.ssh/id_rsa
rivanov
1
Rozwiązałem ten sam problem, dodając klucz do agenta przez „ssh-add ~ / .ssh / the_key”, a następnie autoryzując klucz po frazie. To jest prywatna część tego, co dodałem do GitLab.
Celdor

Odpowiedzi:

259

Znalazłem to po wielu poszukiwaniach. U mnie zadziała idealnie.

  1. Idź do „Git Bash”, tak jak cmd. Kliknij prawym przyciskiem myszy i „Uruchom jako administrator”.
  2. Rodzaj ssh-keygen
  3. Naciśnij enter.
  4. Poprosi Cię o zapisanie klucza w określonym katalogu.
  5. Naciśnij enter. Pojawi się monit o wpisanie hasła lub wprowadzenie bez hasła.
  6. Klucz publiczny zostanie utworzony w określonym katalogu.
  7. Teraz przejdź do katalogu i otwórz .sshfolder.
  8. Zobaczysz plik id_rsa.pub. Otwórz go w notatniku. Skopiuj z niego cały tekst.
  9. Wejdź na https://gitlab.com/profile/keys .
  10. Wklej tutaj w pole tekstowe „klucz”.
  11. Teraz kliknij „Tytuł” ​​poniżej. Zostanie automatycznie wypełniony.
  12. Następnie kliknij „Dodaj klucz”.

Teraz spróbuj i na pewno zadziała.

Muhammad Laraib Khan
źródło
2
Na wypadek, gdybyś zgubił się w kopiowaniu pliku publikacji do schowka. spróbuj wykonać następujące czynności:type %userprofile%\.ssh\id_rsa.pub | clip
jquijano
5
w Windows 10 jeśli potrzebujesz znaleźć .ssh \ id_rsa.pub, możesz wpisać ten cat ~ / .ssh / id_rsa.pub na git bash, pokaże ci "Klucz", więc możesz skopiować i wkleić go do pola tekstowego na gitlab.com/profile/keys
Chutipong Roobklom
11
Upewnij się, że robisz to: ssh-add filename(ze ścieżką, jeśli nie w katalogu rsa) po wykonaniu powyższych kroków
Blasanka
3
Działał jak urok. Dzięki.
brduca
3
Zrobiłem to, problem nie został rozwiązany, odmowa uprawnień
Billal Begueradj
62

Krok 1: Dodano plik konfiguracyjny w ~/.ssh/configpliku, który wygląda jak

   User git
   Hostname gitlab.com
   IdentityFile ~/.ssh/id_rsa_gitlab
   TCPKeepAlive yes
   IdentitiesOnly yes

Krok 2: Po prostu sklonuj repozytorium git BEZ sudo.
Dokumentacja: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths

Fedo Peralta
źródło
1
Jest to wymagane, jeśli plik klucza o domyślnej nazwie jest już używany do innych celów. Jeśli tworzysz plik klucza z nazwą id_rsa_gitlabinną niż domyślna, jak w przykładzie Fedo, będziesz musiał dostarczyć plik konfiguracyjny. Fajny artykuł Gitlab na ten temat: gitlab.com/help/ssh/…
Dany
To zadziałało dla mnie. Miałem zarówno klucze Github, jak i Gitlab, więc za to rozwiązanie.
M.Cush
Muszę zmienić Hostname, aby Hostdokonać tej pracy
Sadee
27

Myślę, że prostym rozwiązaniem jest dodanie klucza prywatnego do agenta uwierzytelniającego (jeśli nie masz klucza ~/.ssh/id_rsa),

ssh-add ~/.ssh/<your private key>

Po prostu pozwalasz się tym ssh-agentzająć.

Dodatkowo możesz dodać go na stałe .

Hussain
źródło
jest to plik z rozszerzeniem .pub
Felipe
7
Nie. Klucz prywatny to plik bez .pubrozszerzenia.
Hussain
15

W moim przypadku nie zadziałało to w WSL (podsystemie Windows dla Linuksa).

Kiedy zaczynam WSL, muszę

  • uruchom ssh-agent_ eval $(ssh-agent -s)
  • dodaj klucz do ssh-agent: ssh-add ~/.ssh/id_rsa
  • jeśli zostanie wyświetlony monit, wprowadź hasło

Teraz połączenie działa.
Możemy to przetestowaćssh -T [email protected]

uwagi:

TmTron
źródło
11

upewnij się, że nie jesteś uruchomiony sudo git clone [email protected]:project/somethiing.git, w przeciwnym razie /root/.sshzamiast przesłanego klucza będzie szukać ssh~/.ssh/id_rsa

rivanov
źródło
10

Jest na to bardzo proste rozwiązanie: zamiast pracować z ssh - przejdź do https. aby to zrobić: w folderze swojego projektu masz tam folder .git - masz plik konfiguracyjny - otwórz go w edytorze tekstu i zmień linię

url [email protected]: twoja_nazwa / twójproject.git

do

url = https://gitlab.com/yourname/yourproject.git

Elad
źródło
Dziękuję Ci. Pracował dla mnie.
ktv6
7

jeśli jesteś w systemie Linux lub Macox, po prostu spróbuj tego w terminalu:

ssh-add -l

jeśli nic nie zwróci, spróbuj tego:

ssh-add

musi stworzyć tożsamość w ~ / .ssh / id_rsa

po ponownej próbie:

ssh-add -l

musi zwrócić twoją tożsamość, więc po ponownej próbie sklonowania musi działać

Uwaga: nie zapomnij dodać klucza ssh w swoim profilu gitlab

dzięki

rapaelec
źródło
5

W moim przypadku nie był to problem z gitlabem, ale z konfiguracją sshd. Serwer ssh nie zezwalał na połączenie z wyjątkiem listy użytkowników. Na tej liście nie było użytkownika git, który łączył się zdalnie z gitlabem. Więc sprawdź to zanim cokolwiek innego.

Możesz sprawdzić konfigurację serwera ssh w /etc/ssh/sshd_config. Jeśli masz linię z opcją AllowUsers, dodaj do niej git:

AllowUsers user1 user2 user3 git
skotperez
źródło
3

Mam gitlab działający z Dockerem, oto co zrobiłem, aby naprawić mój problem.

Okazało się, że wewnątrz docker / var / log / gitlab / sshd / current było wiele wystąpień wiadomości:

Odmowa uwierzytelnienia: zła własność lub tryby dla pliku /var/opt/gitlab/.ssh/authorized_keys

Po czym zmieniłem własność tego pliku z 99: users na git: users z:

chown git: users authorised_keys

xab
źródło
1
Dziękuję bardzo. Uruchamiam Gitlab na Kubernetes, a katalog / gitlab-data (który jest również punktem montowania dla Authorized_keys) miał problemy z uprawnieniami. Wystarczył zwykły chown.
Dillen Meijboom
3

Kroki do wykonania, pojawił się ten sam błąd, ale naprawiłem go. Gitlab chce ssh-rsa, więc poniżej znajduje się kod do uruchomienia ssh dla rsa

  1. ssh-keygen -o -t rsa -b 4096 -C "[email protected]"

[email protected] to adres e-mail Twojego konta gitlab

  1. Poprosi Cię o wpisanie, więc po prostu naciśnij Enter po wyświetleniu poniższego kodu,

    Wprowadź plik, w którym chcesz zapisać klucz (/home/yourDesktopName/.ssh/id_rsa):

  2. Pojawi się monit o ponowne wprowadzenie, więc po prostu naciśnij Enter po wyświetleniu poniższego kodu,

    Wpisz hasło (puste, jeśli nie ma hasła):

  3. Zostanie ponownie wyświetlony monit o ostatnie wejście, więc po prostu naciśnij Enter po wyświetleniu poniższego kodu,

    Wprowadź ponownie to samo hasło:

  4. Pokażesz swoje generowanie ssh-rsa.

  5. Zaloguj się do swojego konta Gitlab i przejdź do prawego paska nawigacyjnego, a na lewym pasku bocznym otrzymasz klucz ssh. Wejdź w to.

  6. Spójrz na znak zachęty z prośbą o wejście, otrzymasz ścieżkę ssh-rsa.

  7. Przejdź do folderu SSH i pobierz plik id_rsa.pub

  8. Otwórz go, weź klucz i skopiuj wklej do Gitlab i prawie gotowe.

  9. Sprawdź przez: ssh -T [email protected]

  10. Dostaniesz: Welcome to GitLab, @joy4!

  11. Gotowe.

Y. Joy Ch. Singha
źródło
dzięki. to działa w systemie Windows 10. Próbowałem ed25519 zgodnie z instrukcją gitlab, ale nie działało.
Dika
Ta odpowiedź jest całkiem dobra - nie wiem, dlaczego nie została oceniona wyżej.
mgibson
3

Wcześniej było to dla mnie bardzo trudne, ale kiedy próbowałem, dodanie klucza ssh w systemach Mac i Linux stało się tak łatwe. Aby to zrobić, wykonaj kilka kroków i polecenie:

  1. Otwórz terminal systemu i przejdź do katalogu projektu za pomocą polecenia:
cd 'project directory name'
  1. Uruchom polecenie ssh-keygen w tym terminalu i wprowadź je, aż pojawi się tam losowy obraz klucza.

  2. Następnie wprowadź jeszcze jedno polecenie w tym terminalu:

cat ~/.ssh/id_rsa.pub

Wygeneruje twój klucz ssh. Klucz zaczyna się od ssh-rsai kończy na .local.

  1. Skopiuj klucz i przejdź do sekcji profilu Gitlab, a następnie ssh keysekcja i wklej go tam. Kliknij Addprzycisk to zadziała.
kumar ujjawal
źródło
to działało dla mnie! dzięki
Shamseer Ahammed
2

Miałem ten sam problem, rozwiązałem go dodając nowy klucz ssh:

  1. ssh-keygen -t ed25519 -C "[email protected]"
  2. Skopiuj swój publiczny klucz SSH do schowka (xclip -sel clip < ~/.ssh/id_ed25519.pub w moim przypadku w systemie Linux)
  3. Na gitlab przejdź do settings=>sshkluczy i przejdź obok nowego klucza
Ahmed AMMOURI
źródło
2

Jeśli masz wiele kont git i chcesz mieć inny klucz ssh

Musisz wykonać ten sam krok, aby wygenerować klucz ssh, ale upewnij się, że

ssh-keygen -t ed25519 -C "[email protected]" 

Wprowadź ścieżkę, którą chcesz zapisać (np .: my-pc / Desktop / .ssh / ed25519)

Dodaj klucz publiczny do swojego gitlab ( Jak dodać klucz ssh do gitlab )

Musisz nową tożsamość ssh za pomocą poniższego polecenia

ssh-add ~/my-pc/Desktop/.ssh/ed25519
Srikrushna
źródło
2

Głównie dwie rzeczy

  1. Musisz mieć klucze id_rsa.pub i id_rsa (prywatne) w swoim folderze .ssh (który powinien znajdować się w twoim katalogu domowym, utwórz go, jeśli go tam nie ma, umieść klucze). To nie zadziała, jeśli nazwałeś swoje pliki kluczy inaczej

  2. Zmień uprawnienia id_rsa na chmod 400 ~ / .ssh / id_rsa

cherankrish
źródło
2

Innym problemem, który może powodować takie zachowanie, jest konfiguracja z 2 możliwymi lokalizacjami% HOME%.

Używam komputera, na którym niektóre z moich dokumentów są przechowywane lokalnie, a niektóre na dysku sieciowym. Niektóre aplikacje myślą, że C:\Users\<MyUserName>\to moje %home%, inne myślą, że U:\to dom.

Okazało się, ssh-keygenże umieść mój klucz prywatny pod C:\users\<MyUserName>\spodem ssh -Ti ssh -vspójrz tam.

Więc wszystko wydaje się działać dobrze, z wyjątkiem tego git clone, git pusha inni szukają kluczaU:\ . Co się nie udaje, więc pojawia się wspomniany błąd.

Zajęło mi godzinę, zanim się dowiedziałem, ale ostatecznie rozwiązanie było proste: skopiowałem wszystko od C:\Users\<MyUserName>\.sshdoU:\.ssh

Emil Bode
źródło
1

Rozwiązałem w ten sposób ...

Wygenerowano klucz dla systemu Windows za pomocą tego polecenia:

ssh-keygen -t rsa -C "[email protected]" -b 4096

ale problem polegał na tym, że po uruchomieniu tego polecenia wyskoczyło wiersz: "Wpisz plik, w którym ma zostać zapisany klucz (/c/Users/xxx/.ssh/id_rsa):" Tutaj podałem tylko nazwę pliku, z powodu której mój klucz był zapisywany w moim pwd, a nie w podanej lokalizacji. Kiedy zrobiłem "git clone", zakładałem, że klucz znajduje się w lokalizacji "/c/Users/xxx/.ssh/id_rsa", ale nie został znaleziony, dlatego generował błąd.

W czasie generowania klucza zostały wygenerowane 2 pliki o nazwach „plik1” i „plik1.pub”. Zmieniłem nazwy obu tych plików na

file1 -> id_rsa 

i

file1.pub -> id_rsa.pub

i umieszczone zarówno w lokalizacji "/c/Users/xxx/.ssh/"

Sugandha Jain
źródło
1

Podejdź do terminala i ponownie zregeneruj klucz ssh. Rodzaj ssh-keygen . Zapyta Cię, gdzie chcesz go zapisać, wpisz ścieżkę.

Następnie skopiuj klucz publiczny na platformę gitlabs. Zwykle zaczyna się od ssh-rsa.

rekuzyjny
źródło
1

Problem dla mnie polegał na tym, że przełączyłem się UsePAMz yesna now pliku konfiguracyjnym SSH pod /etc/ssh/sshd_config. Dzięki UsePAM yeswszystko działa idealnie.

manifest
źródło
1

Znalazłem rozwiązanie w pomocy gitlab .

To create a new SSH key pair: 
 1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
 2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "[email protected]"
 2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
 3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
 4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It's a best practice to use a password, but it's not required and you can skip creating it by pressing Enter twice.
 5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
        macOS:        pbcopy < ~/.ssh/id_ed25519.pub
        WSL / GNU/Linux (requires the xclip package):      xclip -sel clip < ~/.ssh/id_ed25519.pub
        Git Bash on Windows:      cat ~/.ssh/id_ed25519.pub | clip
 6. Navigating to SSH Keys and pasting your public key in the Key field
 7. Click the Add key button

Mam nadzieję, że niektórym z was może to pomóc!

JoeyGutMen
źródło
1

Jak dodać klucz SSH do konta gitlab w systemie Ubuntu?

  1. Otwórz terminal w katalogu twojego projektu.
  2. Wpisz „ssh-keygen -o -t rsa -b 4096 -C„ Twój adres e-mail gitlab ”” i naciśnij Enter
  3. Wpisz „vim /home/mnbtech/.ssh/id_rsa.pub” i naciśnij Enter (lub ręcznie otwórz swój „id_rsa.pub” z miejsca, w którym go zapisałeś)
  4. Pojawi się klucz SSH. Skopiuj te i

  5. Przejdź do swojego konta gitlab.

  6. Kliknij zdjęcie profilowe i kliknij ustawienie
  7. Po lewej stronie wybierz klucze SSH
  8. Następnie wklej te klucze Kliknij dodaj klucz

Klucz SSH zostanie dodany!

(Uwaga: jeśli masz klucz SSH do generowania podglądów i odmowę dostępu (klucz publiczny). Usuwasz klucz ssh do podglądu i generujesz nowy, a następnie dodajesz git nazwa użytkownika i adres e-mail na swoim terminalu)

Ismail Hossain
źródło
Czym różni się ta odpowiedź od poprzednich instrukcji?
RalfFriedl
1

Rozwiązałem [email protected]: Permission denied (publickey)problem, postępując zgodnie z instrukcjami

  1. BIEGAĆ cat ~/.ssh/id_rsa.pub
  2. Skopiuj id_rsa.pub(klucz publiczny) do swojego getlab `Setting -> SSH Keys
  3. BIEGAĆ cat ~/.ssh/id_rsa
  4. Skopiuj id_rsa(klucz prywatny) do `Code_repo-> git_auth-> id_rsa

UWAGA: Uważaj na użytkownika maszyny, jeśli używasz rootużytkownika w swoim DockerFile lub gdziekolwiek indziej, a następnie użyj sudo suprzed uruchomieniem powyższych poleceń, aby uzyskać klucze publiczne i prywatne użytkownika root.

Umar Hayat
źródło
1

W naszym przypadku nie był to problem po stronie użytkownika / klienta, ale po stronie serwera Gitlab.

Uruchamiamy lokalną instancję Gitlab CE 12.9 na CentOS 7.1.

Odkryliśmy, że na serwerze plik .ssh / authoris_keys nie aktualizował się poprawnie. Użytkownicy tworzą swoje klucze SSH (zgodnie z przewodnikiem po Gitlab) i dodają je do serwera Gitlab, ale serwer nie aktualizuje autoryzowanych_kluczy , więc zawsze spowoduje to błędy odmowy uprawnień.

Obejściem polegało na odbudowaniu pliku busy_keys przez uruchomienie:

$ sudo gitlab-rake gitlab:shell:setup

To zadziała dla każdego, kto doda swoje klucze przed uruchomieniem zadania prowizji. Dla kolejnych użytkowników, którzy dodadzą swoje klucze, ktoś musi ponownie ręcznie uruchomić zadania rake.

Bardziej trwałe rozwiązanie było nie używać authorized_keys pliku i użyć zamiast tego indeksowany wyszukiwanie w bazie danych Gitlab :

GitLab Shell zapewnia sposób na autoryzowanie użytkowników SSH poprzez szybkie, indeksowane wyszukiwanie w bazie danych GitLab. GitLab Shell używa odcisku palca klucza SSH, aby sprawdzić, czy użytkownik ma uprawnienia dostępu do GitLab.

Dodaj następujące elementy do swojego sshd_configpliku. Zwykle znajduje się pod adresem /etc/ssh/sshd_config, ale będzie, /assets/sshd_configjeśli używasz Omnibus Docker:

Match User git    # Apply the AuthorizedKeysCommands to the git user only   
  AuthorizedKeysCommand /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-authorized-keys-check git %u %k   
  AuthorizedKeysCommandUser git 
Match all    # End match, settings apply to all users again 

Załaduj ponownie OpenSSH:

# Debian or Ubuntu installations   
sudo service ssh reload

# CentOS installations   
sudo service sshd reload 

Upewnij się, że SSH działa, usuwając klucz SSH użytkownika w interfejsie użytkownika, dodając nowy i próbując pobrać repozytorium.

Domyślnie (cóż, domyślny w naszej instalacji), plik Write to allowed_keys był zaznaczony w obszarze administracyjnym> ustawienia optymalizacji wydajności . Więc odznaczyliśmy to i zamiast tego użyliśmy bazy danych Gitlab.

wprowadź opis obrazu tutaj

Po skonfigurowaniu wyszukiwania indeksowanego i usunięciu zaznaczenia pliku Write to author_keys, dostęp SSH stał się OK.

Gino Mempin
źródło
1

Dla każdego, kto używa systemu Windows 10 i nic innego dla niego nie działa:

W moim przypadku musiałem sklonować repozytorium za pomocą https zamiast ssh i pojawiło się okno z pytaniem o moje dane uwierzytelniające. Potem wszystko działa dobrze.

Tasos Anesiadis
źródło
1

Wiem, odpowiadam bardzo późno i nawet StackOverflow potwierdził, czy naprawdę chcę odpowiedzieć. Odpowiadam, ponieważ nikt tak naprawdę nie opisał rzeczywistego problemu, więc chciałem podzielić się tym samym.

Podstawy

Po pierwsze, zrozum, co jest tutaj pilotem. Zdalny to GitLab, a twój system jest lokalny, więc kiedy mówimy o zdalnym origin, dowolny adres URL ustawiony w wynikach git remote -vjest twoim zdalnym adresem URL.

Protokoły

Zasadniczo Git clone / push / pull działa głównie na dwóch różnych protokołach (są też inne) -

  1. Protokół HTTP
  2. Protokół SSH

Kiedy klonujesz repozytorium (lub zmieniasz zdalny adres URL) i używasz adresu URL HTTPs, takiego jak https://gitlab.com/wizpanda/backend-app.git to używa pierwszego protokołu, tj. Protokołu HTTP.

Jeśli sklonujesz repozytorium (lub zmienisz zdalny adres URL) i użyjesz adresu URL, takiego jak [email protected]:wizpanda/backend-app.git wtedy, używa protokołu SSH.

Protokół HTTP

W tym protokole każda zdalna operacja, tj. Klonowanie, wypychanie i ściąganie, wykorzystuje proste uwierzytelnianie, tj. Nazwę użytkownika i hasło pilota (w tym przypadku GitLab), co oznacza, że ​​dla każdej operacji musisz wpisać swoją nazwę użytkownika i hasło, które mogą być uciążliwe .

Więc kiedy push / pull / clone, GitLab / GitHub uwierzytelnia cię za pomocą twojej nazwy użytkownika i hasła i pozwala ci wykonać operację.

Jeśli chcesz tego spróbować, możesz przełączyć się na adres URL protokołu HTTP, uruchamiając polecenie git remote set-url origin <http-git-url>.

Aby tego uniknąć, możesz skorzystać z protokołu SSH.

Protokół SSH

Proste połączenie SSH działa na parach kluczy publiczny-prywatny. W twoim przypadku GitLab nie może Cię uwierzytelnić, ponieważ do komunikacji używasz adresu URL SSH. Teraz GitLab musi Cię w jakiś sposób znać. W tym celu musisz utworzyć parę kluczy publiczny-prywatny i przekazać klucz publiczny GitLab.

Teraz, gdy push / pull / clone with GitLab, GIT (wewnętrznie SSH) domyślnie zaoferuje Twój klucz prywatny GitLab i potwierdzi Twoją tożsamość, a następnie GitLab pozwoli Ci wykonać operację.

Nie będę więc powtarzał kroków, które już podał Muhammad, powtórzę je teoretycznie.

  1. Wygeneruj parę kluczy `ssh-keygen -t rsa -b 2048 -C" Mój wspólny klucz SSH "
  2. Wygenerowana para kluczy będzie domyślnie ~/.sshnazwana id_rsa.pub(klucz publiczny) i id_rsa(klucz prywatny).
  3. Będziesz przechowywać klucz publiczny do swojego konta GitLab (ten sam klucz może być używany na wielu lub dowolnym serwerze / kontach).
  4. Kiedy klonujesz / push / pull, GIT oferuje twój klucz prywatny.
  5. GitLab dopasowuje klucz prywatny do twojego klucza publicznego i umożliwia wykonanie.

Porady

Zawsze powinieneś tworzyć silny klucz rsa z co najmniej 2048 bajtami. Więc polecenie może być ssh-keygen -t rsa -b 2048.

https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair

Myśl ogólna

Obie metody mają swoje wady i zalety. Po wpisaniu powyższego tekstu poszedłem poszukać więcej na ten temat, ponieważ nigdy czegoś o tym nie czytałem.

Znalazłem ten oficjalny dokument https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols, który mówi o tym więcej. Chodzi mi o to, że czytając błąd i przemyślając błąd, możesz stworzyć własną teorię lub zrozumienie, a następnie porównać z niektórymi wynikami Google, aby rozwiązać problem :)

Shashank Agrawal
źródło
0

Używam Ubuntu 18.04 i faktycznie był to problem z uprawnieniami na moim lokalnym komputerze. Problem zniknął, gdy ustawiłem uprawnienia do odczytu / zapisu do mojego folderu .git.

manian
źródło
0

Cóż, miałem ten sam problem i po wypróbowaniu odpowiedzi zaproponował @Khan. Jednak udało mi się to tylko zmienić, zmieniając pierwotny adres URL w pliku .git / config na adres https: https://gitlab.com/mygitlabusername/mygitproject.git

Ponieważ dostęp przez ssh jest zabroniony, doszedłem do wniosku, że używanie https nie powinno stanowić problemu. Będzie jednak prosić o nazwę użytkownika i hasło przy każdym wypychaniu do repozytorium at

larrytech
źródło
0

Użyj, git config credential.helper storejeśli Twoja witryna korzysta z TLS / SSL. Mam nadzieję, że to zadziała

gmaam
źródło
0

Wydaje się, że istnieją różnice między tymi dwoma sposobami dostępu do repozytorium git, tj. Przy użyciu SSH lub HTTPS. U mnie napotkałem błąd, ponieważ próbowałem przesłać moje lokalne repozytorium za pomocą SSH.

Problem można po prostu rozwiązać, klikając przycisk klonowania na stronie docelowej projektu i kopiując link HTTPS i zastępując go linkiem SSH pojawiającym się w formacie „git @ gitlab…”.

tonderaimuchada
źródło
To nie odpowiada na pytanie.
RalfFriedl
0

Zmień uprawnienia :: chmod 400 ~ / .ssh / id_rsa Pomogło mi to.

Rajim
źródło