Ошибка при использовании помощника по учетным данным Git с gnome-keyring как Sudo

Я искал способ безопасного хранения учетных данных при подключении к нашему Git-серверу, который использует SSL. Я наткнулся на это предложение @james-ward (единственное изменение, которое я сделал, я обновил нашу "системную" конфигурацию вместо нашей "глобальной" конфигурации для Git ( /questions/17253558/kak-ispolzovat-git-s-integratsiej-gnome-keyring/17253577#17253577)

sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

Я тогда могу бежать

git clone https://ipaddress/git/repo.git

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

sudo git clone https://ipaddress/git/repo.git testfolder

это дает мне следующую ошибку

** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon

Иногда мне нужно запустить sudo git clone, так как иногда этого требует каталог, в котором мне нужно сделать клон. Любая помощь будет оценена.

Версии, которые я использую: - git version 1.9.1 - Ubuntu Server 14.0.4

Заранее спасибо! Ричард О.

4 ответа

Решение

Иногда мне нужно запустить sudo git clone, так как иногда этого требует каталог, в котором мне нужно сделать клон. Любая помощь будет оценена

Папка, в которой вы пытаетесь клонировать репозиторий, была создана пользователем root, поэтому у вас нет прав на запись или создание папки в ней, если вы не являетесь пользователем root (sudo), установите права доступа (chmod или же chown) и вы сможете клонировать в папку.

chmod 755 /path

Обратите внимание, что помимо использования sudo в 2016 году libgnome-keyring относится только к GNOME и в настоящее время устарела ( фактически с января 2014 года).

Git 2.11+ (4 квартал 2016 года) будет включать новый помощник по учетным данным, использующий libsecret,

См. Коммит 87d1353 (09 октября 2016 г.) Мантаса Микуленаса ( grawity )
(Объединено Юнио С Хамано - gitster - в коммите bfe800c, 26 октября 2016 г.)

Новый помощник по учетным данным, который общается через " libsecret " с реализациями API секретной службы XDG, был добавлен в contrib/credential/,

оно использует libsecret который может поддерживать другие реализации API секретной службы XDG.

  1. Вы можете установить libsecret и библиотеки разработки с:

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. Затем вам нужно построить диспетчер учетных данных

    cd /usr/share/doc/git/contrib/credential/libsecret (скопируйте папку credential/libsecret из исходного кода, если она не установлена ​​автоматически)

    sudo make

  3. Наконец, вы должны указать git на вновь созданный файл в вашей конфигурации:

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret


Как отмечает mati865 в комментариях:

Следует отметить, что некоторые дистрибутивы, такие как Arch и Fedora, предоставляют помощников, доступных как в двоичном, так и в исходном формате.

  • Бинарный файл Libsecret на Arch: /usr/lib/git-core/git-credential-libsecret, а также
  • Бинарный файл Libsecret на Fedora: /usr/libexec/git-core/git-credential-libsecret,

С помощью sudo запускает команду как root. Это все равно что попросить вашего системного администратора, если он у вас есть, выполнить команду для вас. root пользователь не должен делать что-либо связанное с развитием, и поэтому git не предназначен для использования в качестве root.

После запуска команды от имени другого пользователя (root или любой другой) ожидается, что этот другой пользователь не сможет нормально общаться с вашим обычным пользователем (в частности, он не найдет здесь своего демона gnome-keyring-daemon).

Итак, ответ: "не делай этого". Если вам действительно нужно клонировать в определенном каталоге, дайте себе разрешения на этот каталог, как предложено в ответе CodeWizard. На самом деле, если вам нужно клонировать в каталог, где у вас нет разрешения, спросите себя, делаете ли вы что-то не так: в принципе, этого не должно быть (я думаю, вы уже использовали sudo слишком много в прошлом, и это причина, по которой у вас и там есть каталоги, доступные для записи).

Проще: попробуйте git-credential-oauth, включенный во многие дистрибутивы Linux , включая Fedora, Debian и Ubuntu.

Никаких больше паролей! Больше никаких токенов личного доступа! Больше никаких SSH-ключей!

Помощник по учетным данным Git, который обеспечивает безопасную аутентификацию в GitHub, GitLab, BitBucket и других форжах с использованием OAuth.

При первом нажатии помощник откроет окно браузера для аутентификации. Последующие нажатия в течение срока службы хранилища не требуют никакого взаимодействия.

Он совместим с любым помощником хранилища, который вы выберете, например git-credential-cache или git-credential-libsecret (к сожалению, не включен в Ubuntu).

Другие вопросы по тегам