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

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

## Следует ли использовать команду `sudo` или более высокий уровень привилегий с GIT?

Команду `sudo` или более высокий уровень привилегий, например разрешения администратора, не следует использовать с GIT.

Если у вас есть очень хорошая *причина* , необходимо использовать `sudo`ее, убедитесь, что вы используете ее с каждой командой. Если вы [создадите ключи SSH](/ru/enterprise-server@3.22/authentication/connecting-to-github-with-ssh) без `sudo`, а затем попытаетесь выполнить такую команду, как `sudo git push`, будут использоваться не те ключи, которые вы создали.

## Проверка подключения к правильному серверу

Чтобы убедиться в том, что вы подключаетесь к нужному домену, можно ввести следующую команду:

```shell copy
ssh -vT git@HOSTNAME
```

Вы должны увидеть следующий результат:

```shell
> 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 HOSTNAME port 22.
```

Подключение должно выполняться через порт 22.

## Подключение с помощью пользователя git

Все подключения, в том числе к удаленным URL-адресам, должны выполняться от имени пользователя git. Если вы попытаетесь подключиться к имени пользователя данных переменных данных.product.github %}, произойдет сбой:

```shell
$ ssh -T GITHUB-USERNAME@HOSTNAME
> Permission denied (publickey).
```

Если подключение завершилось сбоем, и вы используете удаленный URL-адрес с именем пользователя GitHub, вы можете [изменить удаленный URL-адрес, чтобы использовать пользователя](/ru/enterprise-server@3.22/get-started/git-basics/managing-remote-repositories) Git.

Чтобы проверить подключение, введите следующую команду:

```shell copy
ssh -T git@HOSTNAME
```

Вы должны увидеть следующий результат:

```shell
> Hi USERNAME! You've successfully authenticated...
```

## Проверка наличия используемого ключа

<div class="ghd-tool mac">

1. Откройте <span class="platform-mac">Терминал</span><span class="platform-linux">Терминал</span><span class="platform-windows">GIT Bash</span>.
2. Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.

   ```shell
   # 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)
   ```

</div>

<div class="ghd-tool windows">

Если у вас установлено приложение [GitHub Desktop](https://desktop.github.com/), его можно использовать для клонирования репозиториев, не прибегая к ключам SSH.

1. **При использовании GIT Bash** включите ssh-agent:

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

   **Если вы используете другую командную строку терминала**, например [GIT для Windows](https://git-for-windows.github.io/), включите ssh-agent:

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

   > \[!NOTE]
   > Команды eval, приведенные выше, запускают ssh-agent вручную в вашей среде. Эти команды могут завершиться ошибкой, если ssh-agent уже выполняется как фоновая системная служба. В этом случае рекомендуется проверить соответствующую документацию для вашей среды.

2. Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.

   ```shell
   $ ssh-add -l -E sha256
   > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
   ```

</div>

<div class="ghd-tool linux">

1. Откройте <span class="platform-mac">Терминал</span><span class="platform-linux">Терминал</span><span class="platform-windows">GIT Bash</span>.

2. Убедитесь в наличии закрытого ключа, созданного и загруженного в SSH.

   ```shell
   $ ssh-add -l -E sha256
   > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
   ```

</div>

Команда `ssh-add`*должна* вывести длинную строку из цифр и букв. Если он не печатает ничего, необходимо [создать новый ключ](/ru/enterprise-server@3.22/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) SSH и связать его с GitHub.

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

### Получение дополнительных сведений

Вы также можете проверить, используется ли ключ, попытавшись подключиться к `git@HOSTNAME`:

```shell copy
ssh -vT git@HOSTNAME
```

Результат будет выглядеть следующим образом.

```shell
> ...
> 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).
```

В этом примере SSH не обнаружил никаких ключей.

* "-1" в конце строк "файл удостоверений" означает, что SSH не удалось найти файл для использования.
* Строки "Попробовать закрытый ключ" указывают, что файл не найден.

Если файл существует, эти строки будут иметь значение "1" и "Предложение открытого ключа", как в этом выходных данных:

```shell
> ...
> 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
```

## Проверка подключения открытого ключа к учетной записи

Чтобы установить безопасное подключение, необходимо предоставить открытый ключ GitHub.

<div class="ghd-tool mac">

1. Откройте терминал.

2. Запустите агент SSH в фоновом режиме.

   ```shell
   $ eval "$(ssh-agent -s)"
   > Agent pid 59566
   ```

3. Найдите и запишите отпечаток открытого ключа.

   ```shell
   $ ssh-add -l -E sha256
   > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
   ```

4. В правом верхнем углу любой страницы на GitHubщелкните рисунок профиля, а затем выберите **октикона "шестеренка" aria-hidden="true" aria-label="gear" %} Settings**.

5. В разделе "Access" боковой панели щелкните **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key" aria-label="key" role="img"><path d="M10.5 0a5.499 5.499 0 1 1-1.288 10.848l-.932.932a.749.749 0 0 1-.53.22H7v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22H5v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22h-2A1.75 1.75 0 0 1 0 14.25v-2c0-.199.079-.389.22-.53l4.932-4.932A5.5 5.5 0 0 1 10.5 0Zm-4 5.5c-.001.431.069.86.205 1.269a.75.75 0 0 1-.181.768L1.5 12.56v1.69c0 .138.112.25.25.25h1.69l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l1.023-1.025a.75.75 0 0 1 .768-.18A4 4 0 1 0 6.5 5.5ZM11 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg> SSH и ключи GPG**.

6. Сравните список ключей SSH с выходными данными команды `ssh-add`.

</div>

<div class="ghd-tool windows">

1. Откройте командную строку.

2. Запустите агент SSH в фоновом режиме.

   ```shell
   $ ssh-agent -s
   > Agent pid 59566
   ```

3. Найдите и запишите отпечаток открытого ключа.

   ```shell
   $ ssh-add -l -E sha256
   > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
   ```

4. В правом верхнем углу любой страницы на GitHubщелкните рисунок профиля, а затем выберите **октикона "шестеренка" aria-hidden="true" aria-label="gear" %} Settings**.

5. В разделе "Access" боковой панели щелкните **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key" aria-label="key" role="img"><path d="M10.5 0a5.499 5.499 0 1 1-1.288 10.848l-.932.932a.749.749 0 0 1-.53.22H7v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22H5v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22h-2A1.75 1.75 0 0 1 0 14.25v-2c0-.199.079-.389.22-.53l4.932-4.932A5.5 5.5 0 0 1 10.5 0Zm-4 5.5c-.001.431.069.86.205 1.269a.75.75 0 0 1-.181.768L1.5 12.56v1.69c0 .138.112.25.25.25h1.69l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l1.023-1.025a.75.75 0 0 1 .768-.18A4 4 0 1 0 6.5 5.5ZM11 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg> SSH и ключи GPG**.

6. Сравните список ключей SSH с выходными данными команды `ssh-add`.

</div>

<div class="ghd-tool linux">

1. Откройте терминал.

2. Запустите агент SSH в фоновом режиме.

   ```shell
   $ eval "$(ssh-agent -s)"
   > Agent pid 59566
   ```

3. Найдите и запишите отпечаток открытого ключа. Если вы используете OpenSSH 6.7 или более поздней версии:

   ```shell
   $ 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)
   ```

   Если вы используете OpenSSH 6.8 или более ранней версии:

   ```shell
   $ 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)
   ```

4. В правом верхнем углу любой страницы на GitHubщелкните рисунок профиля, а затем выберите **октикона "шестеренка" aria-hidden="true" aria-label="gear" %} Settings**.

5. В разделе "Access" боковой панели щелкните **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key" aria-label="key" role="img"><path d="M10.5 0a5.499 5.499 0 1 1-1.288 10.848l-.932.932a.749.749 0 0 1-.53.22H7v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22H5v.75a.749.749 0 0 1-.22.53l-.5.5a.749.749 0 0 1-.53.22h-2A1.75 1.75 0 0 1 0 14.25v-2c0-.199.079-.389.22-.53l4.932-4.932A5.5 5.5 0 0 1 10.5 0Zm-4 5.5c-.001.431.069.86.205 1.269a.75.75 0 0 1-.181.768L1.5 12.56v1.69c0 .138.112.25.25.25h1.69l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l.06-.06v-1.19a.75.75 0 0 1 .75-.75h1.19l1.023-1.025a.75.75 0 0 1 .768-.18A4 4 0 1 0 6.5 5.5ZM11 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg> SSH и ключи GPG**.

6. Сравните список ключей SSH с выходными данными команды `ssh-add`.

</div>

Если открытый ключ не отображается в GitHub, необходимо [добавить ключ SSH в GitHub](/ru/enterprise-server@3.22/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account) для связывания его с компьютером.

> \[!WARNING]
> Если вы видите ключ SSH, который вы не знакомы с GitHub, удалите его немедленно и обратитесь к [поддержки GitHub](https://support.github.com)администратор сайта для получения дополнительной справки. Неопознанный открытый ключ может указывать на возможную проблему безопасности. Дополнительные сведения см. в разделе [Проверка ключей SSH](/ru/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys).