2015-11-01 11 views
8

Jestem właścicielem repozytorium "projektu", ale jakoś nie jestem w stanie go popchnąć.Github uwierzytelnia się, ale nie zezwala na kod push

[email protected] ~/rails_projects/project $ git remote -v 
origin [email protected]:user/project.git (fetch) 
origin [email protected]:user/project.git (push) 

Oto kontrola uwierzytelniania:

[email protected] ~/rails_projects/project $ ssh -T [email protected] 
Hi user/project! You've successfully authenticated, but GitHub does not provide shell access. 

push próba:

[email protected] ~/rails_projects/project $ git push origin qa 
ERROR: The key you are authenticating with has been marked as read only. 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

Każdy pomysł jak naprawić ten błąd?

+0

Czy należysz do organizacji na Github, do której należy repozytorium? Możliwe jest ustawienie dostępu tylko do odczytu do repozytoriów dla określonych członków. Być może tak jest. https://github.com/blog/674-introducing-organizations – toniedzwiedz

+0

Nie, jestem właścicielem repo – Abram

Odpowiedz

7

Prawdopodobnie masz więcej niż jeden klucz SSH, a klucz, który jest prezentowany, to klucz wdrożenia dla repozytorium, a nie jeden z kluczy konta z uprawnieniami do zapisu. Istnieją dwa sposoby rozwiązania tego problemu:

  1. Usuń wszystkie klucze z agenta SSH i ponownie dodaj tylko poprawny klucz konta.

    ssh-add -D 
    ssh-add /path/to/correct/key 
    
  2. Zastosowanie HTTPS instead of SSH. Możesz to łatwo uzyskać przez changing the remote URL dla pochodzenia, aby użyć schematu HTTPS zamiast SSH.

Jeden lub drugi z nich powinien zadziałać, chyba że po prostu przedstawia się błędne dane uwierzytelniające.

+0

Uruchamianie 'ssh-add -l' ujawniło, że klucz, który myślałem, że używam, nie został dołączony . Dodałem go, a teraz wszystko działa. Dziękuję Ci. – Abram

4

Błąd:

ERROR: The key you are authenticating with has been marked as read only.

może oznaczać, że albo:

  • starasz się wcisnąć do repo za pomocą klucza, który został powiązany z innym repozytorium (na przykład jako klucz deploy) , więc check przez:

    $ ssh -i ~/.ssh/id_rsa [email protected] 
    Hi user/project! You've successfully authenticated, but GitHub does not provide shell access. 
    

    i porównaj user/project jeśli jest taka sama jako repozytorium, w którym chcesz naciskać.

  • klucz został zablokowany (np nie był używany przez dłuższy czas), więc masz do ponownego potwierdzić wypełniając audyt istniejących kluczy SSH w profilu użytkownika github (/settings/ssh)

  • używasz wielu kluczy jednocześnie, sprawdź: ssh-add -l (jeśli tak, usuń je i ponownie dodaj prawą).

Więc:

Please make sure you have the correct access rights and the repository exists.

o następujących krokach:

  1. Uwaga Twój RSA fingerprint przez:

    $ ssh-add -l 
    2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx (stdin) (RSA) 
    
  2. Następnie sprawdź na GitHub jeżeli został dodane do twojego konta lub repozytorium:

    • na koncie, należy sprawdzić pod adresem: /settings/ssh (klucze SSH),

      • jeśli brakuje, należy go dodać,
      • jeśli Key jest już używany znajdziesz których inne repo używania (patrz poniżej), a następnie wyjąć i ponownie włożyć na koncie,
    • dla konkretnego repozytorium, należy sprawdzić pod adresem: :name/:repo/settings/keys (Wdrażanie kluczy),

    • jeśli nie jesteś właścicielem repozytorium, sprawdź, czy jesteś w odpowiedniej grupie (z dostępem push).

Alternatywnie można użyć & dodać nowy klucz, troubleshoot common SSH Problems lub contact GitHub support, gdyż mogą one odwołane go z jakiegoś powodu (na przykład poprzez publicznie ujawniać).

Powiązane problemy