Удостоверьтесь что у вас есть необходимые права доступа и репозиторий существует
Перейти к содержимому

Удостоверьтесь что у вас есть необходимые права доступа и репозиторий существует

  • автор:

Удостоверьтесь, что у вас есть необходимые права доступа и репозиторий существует

Пытаюсь клонировать gitlab репозиторий с помощью ssh, но при попытке сделать через терминал выдает следующее:

[email protected]: Permission denied (publickey). fatal: Не удалось прочитать из внешнего репозитория. Удостоверьтесь, что у вас есть необходимые права доступа и репозиторий существует. 

В терминале пишу следующее:

git clone [email protected]:(название репозитория).git 

Не могу понять в чем проблема, помогите пожалуйста

Отслеживать

47.5k 17 17 золотых знаков 56 56 серебряных знаков 99 99 бронзовых знаков

задан 26 дек 2022 в 12:39

31 5 5 бронзовых знаков

Ошибка: отказано в разрешении (publickey)

Ошибка «Отказано в разрешении» означает, что сервер отклонил подключение. Ниже приведено несколько причин и разъяснение по самым распространенным примерам.

Platform navigation

Should the sudo command or elevated privileges be used with Git?

You should not be using the sudo command or elevated privileges, such as administrator permissions, with Git. If you have a very good reason you must use sudo , then ensure you are using it with every command (it’s probably just better to use su to get a shell as root at that point). If you generate SSH keys without sudo and then try to use a command like sudo git push , you won’t be using the same keys that you generated.

Check that you are connecting to the correct server

Typing is hard, we all know it. Pay attention to what you type; you won’t be able to connect to «githib.com» or «guthub.com». In some cases, a corporate network may cause issues resolving the DNS record as well.

To make sure you are connecting to the right domain, you can enter the following command:

$ ssh -vT git@github.com > OpenSSH_8.1p1, LibreSSL 2.7.3 > debug1: Reading configuration data /Users/YOU/.ssh/config > debug1: Reading configuration data /etc/ssh/ssh_config > debug1: /etc/ssh/ssh_config line 47: Applying options for * > debug1: Connecting to github.com port 22. 

The connection should be made on port 22, unless you’re overriding settings to use SSH over HTTPS.

Always use the «git» user

All connections, including those for remote URLs, must be made as the «git» user. If you try to connect with your GitHub username, it will fail:

$ ssh -T GITHUB-USERNAME@github.com > Permission denied (publickey). 

If your connection failed and you’re using a remote URL with your GitHub username, you can change the remote URL to use the «git» user.

You should verify your connection by typing:

$ ssh -T git@github.com > Hi USERNAME! You've successfully authenticated.  

Make sure you have a key that is being used

  1. Open Terminal Terminal Git Bash .
  2. Verify that you have a private key generated and loaded into SSH.
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 $ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) 

If you have GitHub Desktop installed, you can use it to clone repositories and not deal with SSH keys.

    If you are using Git Bash, turn on ssh-agent:

# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566 

If you are using another terminal prompt, such as Git for Windows, turn on ssh-agent:

```shell # start the ssh-agent in the background $ eval $(ssh-agent -s) > Agent pid 59566 ``` 

Note: The eval commands above start ssh-agent manually in your environment. These commands may fail if ssh-agent already runs as a background system service. If that happens, we recommend you check the relevant documentation for your environment.

$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) 
  1. Open Terminal Terminal Git Bash .
  2. Verify that you have a private key generated and loaded into SSH.
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) 

The ssh-add command should print out a long string of numbers and letters. If it does not print anything, you will need to generate a new SSH key and associate it with GitHub.

Tip: On most systems the default private keys ( ~/.ssh/id_rsa and ~/.ssh/identity ) are automatically added to the SSH authentication agent. You shouldn’t need to run ssh-add path/to/key unless you override the file name when you generate a key.

Getting more details

You can also check that the key is being used by trying to connect to git@github.com :

$ ssh -vT git@github.com > . > debug1: identity file /Users/YOU/.ssh/id_rsa type -1 > debug1: identity file /Users/YOU/.ssh/id_rsa-cert type -1 > debug1: identity file /Users/YOU/.ssh/id_dsa type -1 > debug1: identity file /Users/YOU/.ssh/id_dsa-cert type -1 > . > debug1: Authentications that can continue: publickey > debug1: Next authentication method: publickey > debug1: Trying private key: /Users/YOU/.ssh/id_rsa > debug1: Trying private key: /Users/YOU/.ssh/id_dsa > debug1: No more authentication methods to try. > Permission denied (publickey). 

In that example, we did not have any keys for SSH to use. The «-1» at the end of the «identity file» lines means SSH couldn’t find a file to use. Later on, the «Trying private key» lines also indicate that no file was found. If a file existed, those lines would be «1» and «Offering public key», respectively:

$ ssh -vT git@github.com > . > debug1: identity file /Users/YOU/.ssh/id_rsa type 1 > . > debug1: Authentications that can continue: publickey > debug1: Next authentication method: publickey > debug1: Offering RSA public key: /Users/YOU/.ssh/id_rsa 

Verify the public key is attached to your account

You must provide your public key to GitHub to establish a secure connection.

  1. Open Terminal.
  2. Start SSH agent in the background.
$ eval "$(ssh-agent -s)" > Agent pid 59566 
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) 

Screenshot of a user's account menu on GitHub. The menu item

In the upper-right corner of any page, click your profile photo, then click Settings.

  1. Open the command line.
  2. Start SSH agent in the background.
$ ssh-agent -s > Agent pid 59566 
$ ssh-add -l -E sha256 > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) 

Screenshot of a user's account menu on GitHub. The menu item

In the upper-right corner of any page, click your profile photo, then click Settings.

  1. Open Terminal.
  2. Start SSH agent in the background.
$ eval "$(ssh-agent -s)" > Agent pid 59566 
$ ssh-add -l > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) 

If you’re using OpenSSH 6.8 or newer:

$ ssh-add -l -E md5 > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) 

Screenshot of a user's account menu on GitHub. The menu item

In the upper-right corner of any page, click your profile photo, then click Settings.

If you don’t see your public key in GitHub, you’ll need to add your SSH key to GitHub to associate it with your computer.

Warning: If you see an SSH key you’re not familiar with on GitHub, delete it immediately and contact us through the GitHub Support portal for further help. An unidentified public key may indicate a possible security concern. For more information, see «Reviewing your SSH keys.»

Устранение ошибок клонирования

Если у вас возникли проблемы с клонированием репозитория, рассмотрите эти распространенные ошибки.

HTTPS cloning errors

There are a few common errors when using HTTPS with Git. These errors usually indicate you have an old version of Git, or you don’t have access to the repository.

Here’s an example of an HTTPS error you might receive:

> error: The requested URL returned error: 401 while accessing > https://github.com/USER/REPO.git/info/refs?service=git-receive-pack > fatal: HTTP request failed 
> Error: The requested URL returned error: 403 while accessing > https://github.com/USER/REPO.git/info/refs > fatal: HTTP request failed 
> Error: https://github.com/USER/REPO.git/info/refs not found: did you run git > update-server-info on the server? 

Check your Git version

There’s no minimum Git version necessary to interact with GitHub, but we’ve found version 1.7.10 to be a comfortable stable version that’s available on many platforms. You can always download the latest version on the Git website.

Ensure the remote is correct

The repository you’re trying to fetch must exist on GitHub.com, and the URL is case-sensitive.

You can find the URL of the local repository by opening the command line and typing git remote -v :

$ git remote -v # View existing remotes > origin https://github.com/ghost/reactivecocoa.git (fetch) > origin https://github.com/ghost/reactivecocoa.git (push) $ git remote set-url origin https://github.com/ghost/ReactiveCocoa.git # Change the 'origin' remote's URL $ git remote -v # Verify new remote URL > origin https://github.com/ghost/ReactiveCocoa.git (fetch) > origin https://github.com/ghost/ReactiveCocoa.git (push) 

Alternatively, you can change the URL through our GitHub Desktop application.

Provide an access token

To access GitHub, you must authenticate with a personal access token instead of your password. For more information, see «Managing your personal access tokens.»

If you are accessing an organization that uses SAML SSO and you are using a personal access token (classic), you must also authorize your personal access token to access the organization before you authenticate. For more information, see «About authentication with SAML single sign-on» and «Authorizing a personal access token for use with SAML single sign-on.»

Check your permissions

When prompted for a username and password, make sure you use an account that has access to the repository.

Tip: If you don’t want to enter your credentials every time you interact with the remote repository, you can turn on credential caching. If you are already using credential caching, please make sure that your computer has the correct credentials cached. Incorrect or out of date credentials will cause authentication to fail.

Use SSH instead

If you’ve previously set up SSH keys, you can use the SSH clone URL instead of HTTPS. For more information, see «About remote repositories.»

Error: Repository not found

If you see this error when cloning a repository, it means that the repository does not exist or you do not have permission to access it. There are a few solutions to this error, depending on the cause.

Check your spelling

Typos happen, and repository names are case-sensitive. If you try to clone git@github.com:user/repo.git , but the repository is really named User/Repo you will receive this error.

To avoid this error, when cloning, always copy and paste the clone URL from the repository’s page. For more information, see «Cloning a repository.»

To update the remote on an existing repository, see «Managing remote repositories».

Checking your permissions

If you are trying to clone a private repository but do not have permission to view the repository, you will receive this error.

Make sure that you have access to the repository in one of these ways:

  • The owner of the repository
  • A collaborator on the repository
  • A member of a team that has access to the repository (if the repository belongs to an organization)

Check your SSH access

In rare circumstances, you may not have the proper SSH access to a repository.

You should ensure that the SSH key you are using is attached to your personal account on GitHub. You can check this by typing the following into the command line:

$ ssh -T git@github.com > Hi USERNAME! You've successfully authenticated, but GitHub does not > provide shell access. 

If the repository belongs to an organization and you’re using an SSH key generated by an OAuth app, OAuth app access may have been restricted by an organization owner. For more information, see «About OAuth app access restrictions.»

Check that the repository really exists

If all else fails, make sure that the repository really exists on GitHub.com! If you’re trying to push to a repository that doesn’t exist, you’ll get this error.

Error: Remote HEAD refers to nonexistent ref, unable to checkout

This error occurs if the default branch of a repository has been deleted on GitHub.com.

Detecting this error is simple; Git will warn you when you try to clone the repository:

$ git clone https://github.com/USER/REPO.git # Clone a repo > Cloning into 'repo'. > remote: Counting objects: 66179, done. > remote: Compressing objects: 100% (15587/15587), done. > remote: Total 66179 (delta 46985), reused 65596 (delta 46402) > Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done. > Resolving deltas: 100% (46985/46985), done. > warning: remote HEAD refers to nonexistent ref, unable to checkout. 

To fix the error, you’ll need to be an administrator of the repository on GitHub.com. You’ll want to change the default branch of the repository.

After that, you can get a list of all the available branches from the command line:

$ git branch -a # Lists ALL the branches > remotes/origin/awesome > remotes/origin/more-work > remotes/origin/new-main 

Then, you can just switch to your new branch:

$ git checkout new-main # Create and checkout a tracking branch > Branch new-main set up to track remote branch new-main from origin. > Switched to a new branch 'new-main' 

Ошибка: Permission denied (доступ запрещен) /публичный ключ/

Ошибка «Permission denied» (доступ запрещён) означает, что сервер отклонил ваше соединение. У этой ошибки может быть несколько причин; наиболее общие из них приведены ниже.

Можно ли использовать в Git команду sudo ?

Вы не должны использовать команду sudo с Git. Если у вас есть веская причина использовать sudo , убедитесь, что вы используете её с каждой командой (возможо, лучше использовать su чтобы получить оболочку с правами суперпользователя (администратора) в этом месте). Если вы сгенерировали SSH-ключ без sudo , а затем пытаетесь использовать команду, подобную sudo git push , вы не должны использовать те же ключи, которые сгенерировали.

Проверьте, что вы подключились к нужному серверу

Будьте внимательны при вводе команд с клавиатуры. В некоторых случаях корпоративная сеть может привести к проблемам разрешения записи DNS.

Так как документ подготовлен в рамках курсов повышения квалификации «Правильный курс» , то и проверка подключения будет описана именно на этом примере.
Напомним, что доступ к репозиторию [email protected] организован по порту 25000, а не по стандартному для SSH порту 22. Поэтому в команде подключения вы должны явно указать номер порта.

Для того, чтобы убедиться в том, что вы подключаетесь к нужному домену, введите следующую команду, добавив в строке номер порта ‘-p 2500’ :

ssh -vT ‘-p 25000’ [email protected]
OpenSSH_7.1p2, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /с/Users/ вы /.ssh/config
debug1: /c/Users/ вы /.ssh/config line 1: Applying options for git.propercourse.ru
debug1: Reading configuration data /etc/ssh_config
Connecting to git.propercourse.ru [94.79.52.169] port 25000.
debug1: Connection established.

Всегда использовать пользователя «git»

Все соединения длджны выполняться под пользователем «git». Если вы попытаетесь соединиться под вашим псевдонимом в propercourse, соединение не установится:

ssh -T вы @git.propercourse.ru
Permission denied (publickey, password).

Вместо этого вы должны проверить соединение, набрав в строке:

Welcome to GitLab, пользователь !

Убедитесь, что у вас есть ключ, который используется

# start the ssh-agent in the background
eval «$(ssh-agent -s)»
Agent pid 59566
# start the ssh-agent in the background
eval «$(ssh-agent -s)»
Agent pid 59566
2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/ вы /.ssh/id_rsa (RSA)
ssh-add -l -E md5
2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/ вы /.ssh/id_rsa (RSA)

Команда ssh-add должна вывести длинную строку из цифр и букв. Если ничего не будет выведено на экран, вы должны сгенерировать новый SSH-ключ и связать его с GitLab.

Замечание. В большинстве систем приватные ключи по умолчанию ( ~/.ssh/id_rsa , ~/.ssh/id_dsa и ~/.ssh/identity ) автоматически добавляются к агенту аутентификации SSH. Вы не должны запускать ssh-add path/to/key , иначе вы перезапишите имя файла при генерации ключа.

Получение детализации

Вы можете также проверить, что ключ используется при попытках соединения с [email protected] :

ssh -vT ‘-p 25000’ [email protected]
debug1: identity file /Users/ вы /.ssh/id_rsa type -1
debug1: identity file /Users/ вы /.ssh/id_rsa-cert type -1
debug1: identity file /Users/ вы /.ssh/id_dsa type -1
debug1: identity file /Users/ вы /.ssh/id_dsa-cert type -1
debug1: Authentications that can continue: publickey, password
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/you/.ssh/id_rsa
debug1: Trying private key: /Users/you/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

В этом примере у нас нет ключей для использования SSH. Значение «-1» в конце строки «identity file» означает, что SSH не может найти файла для использования. Ниже, строка «Trying private key» также показывает, что файл не найден. Если бы файл был найден, значение в этих строках было бы «1», и «Offering public key» соответственно.

ssh -vT ‘-p 25000’ [email protected]
debug1: identity file /Users/ вы /.ssh/id_rsa type 1
debug1: Authentications that can continue: publickey, password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: C:\\Users\\ вы \\.ssh\\id_rsa

Проверка привязки публичного ключа к вашей учётной записи

Вы должны предоставить ваш публичный ключ GitLab чтобы установить защищённое соединение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *