ключи ssh ubuntu 22.04 не хранятся

Вопрос или проблема

Я купил новый ноутбук с Ubuntu 22.04 и мне нужно было настроить SSH для работы с репозиториями GitLab. Я следовал инструкциям по генерации SSH ключей из документации и использовал ED25519.

Как я и сказал, я выполнил шаги и добавил ключ в свой аккаунт GitLab. Теперь, каждый раз, когда я пытаюсь клонировать репозиторий или выполнять git push или git pull, я получаю эту ошибку:

sign_and_send_pubkey: signing failed for ED25519 "/home/abar/.ssh/id_ed25519" from agent: agent refused operation
[email protected]: Permission denied (publickey)

Примечание: попытка подключиться по SSH к удаленному серверу приводит к той же ошибке, это не связано с GitLab.

Запуская эти команды (из документации GitLab), я могу подключиться к GitLab в открытой сессии терминала, но при открытии новой сессии этого не происходит, и мне нужно снова выполнять эти команды.

eval $(ssh-agent -s)
ssh-add <путь к приватному SSH ключу>

Документация также предлагает добавить в ~/.ssh/config следующие строки (это не работает)

Host gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab_com_rsa

Я спросил у ChatGPT об этом, и он предложил две вещи:

  1. Выполнить ssh-add -l, чтобы проверить, существует ли мой ключ. Хорошо, он возвращает значение. Также он предлагает выполнить eval и добавить ключ с помощью ssh-add.

  2. Добавить eval и ssh-add в файл .zshrc. Это не очень удобно, так как каждый раз нужно вводить пароль…

Еще одна вещь, которую я проверил, это содержимое $SSH_AUTH_SOCK, и оно возвращает /run/user/1002/keyring/ssh.

На старом ноутбуке я использовал Ubuntu 22.04, и у меня не было этих проблем, я проверил разрешения, конфигурационные файлы, и они одинаковые.

Я не знаю, что делать, чтобы решить эту проблему.

Хорошо, я не знаю точно как, но я прочитал документацию с GitHub, чтобы сравнить её с GitLab, и шаги для добавления и конфигурации SSH ключа.

Шаги одинаковые, но я заметил, что GitHub добавляет эти строки в файл config для github.com.

  AddKeysToAgent yes
  UseKeychain yes

Я решил попробовать и добавил AddKeysToAgent yes. Я закрыл терминал, и теперь каждый проект, клонированный из GitLab, работает, и мне не нужно каждый раз запускать агент SSH и добавлять мой ключ.

Ответ или решение

Решение проблемы с хранением SSH-ключей в Ubuntu 22.04

Введение

Недавнее приобретение нового ноутбука с Ubuntu 22.04 и настройка SSH для работы с репозиториями GitLab могут привести к различным сложностям, особенно если предыдущий опыт использования Ubuntu был более беспроблемным. В данной статье мы рассмотрим, как правильно настроить SSH-ключи и устранить проблему, связанную с тем, что SSH-ключи не сохраняются между сессиями.

Проблема

Вы столкнулись с ошибкой sign_and_send_pubkey: signing failed for ED25519 "/home/abar/.ssh/id_ed25519" from agent: agent refused operation, когда пытались выполнить клонирование репозитория или подключение к удаленному серверу через SSH. Проблема заключается в том, что SSH-агент не сохраняет ваш ключ для автоматического использования в новых сессиях терминала.

Шаги по решению проблемы

  1. Проверка ключа в SSH-агенте
    Запустите команду:

    ssh-add -l

    Если ваш ключ отображается, это означает, что он загружен в SSH-агент. Если нет, выполните команды:

    eval $(ssh-agent -s)
    ssh-add ~/.ssh/id_ed25519
  2. Добавление в конфигурационный файл SSH
    Расширьте ваш ~/.ssh/config, добавив следующие строки, что позволит вашему SSH-агенту автоматически добавлять ключ при его использовании:

    Host gitlab.com
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/id_ed25519
     AddKeysToAgent yes
     UseKeychain yes

    Это обеспечит автоматическую загрузку ключа в SSH-агент при каждом новом подключении.

  3. Настройка zsh
    Вы можете добавить команды для инициализации SSH-агента в файл конфигурации вашего терминала, например, в ~/.zshrc (или ~/.bashrc, если используете bash):

    eval $(ssh-agent -s)
    ssh-add ~/.ssh/id_ed25519

    Однако если это приводит к постоянному вводу пароля, лучше использовать AddKeysToAgent yes, чтобы избежать этого.

  4. Проверка переменной окружения
    Убедитесь, что переменная $SSH_AUTH_SOCK устанавливается правильно:

    echo $SSH_AUTH_SOCK

    Если путь указывает на keyring, это может повлечь за собой дополнительные шаги по устранению неполадок. Обычно, если используется gnome-keyring, это может конфликтовать с SSH-агентом.

Заключение

С помощью предложенных шагов вы сможете успешно настроить SSH на вашем ноутбуке с Ubuntu 22.04, избегая определения ключа в каждой новой сессии. Настройки AddKeysToAgent yes и UseKeychain yes значительно упростят процесс и обеспечат более надежное управление ключами. Следуя представленным рекомендациям, вы сможете легко взаимодействовать с вашими репозиториями на GitLab и другими SSH-ресурсами без дополнительных затруднений.

Если после выполнения всех шагов проблема сохраняется, рассмотрите возможность диагностики конфигураций SSH или установку альтернативного SSH-клиента для дополнительной проверки.

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

Капча загружается...