1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vcs-all-in-one-git-remote-gcrypt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.rst

git-remote-gcrypt

Git-remote-helper с шифрованием GnuPG

Manual section: 1

Описание

Программа git-remote-gcrypt является помощником для работы с удаленными репозиториями в системе Git, позволяющим выполнять операции push и pull для зашифрованных репозиториев с использованием GnuPG. Этот помощник обрабатывает URI, начинающиеся с префикса gcrypt::.

Поддерживаемыми бэкендами являются local, rsync:// и sftp://, где репозиторий хранится как набор файлов, а также любой <giturl>, где gcrypt будет хранить ту же самую представление в репозитории Git, используя произвольный транспорт Git. Для сравнения производительности см. раздел «Производительность» ниже.

Также существует экспериментальный бэкенд rclone:// для ранних адаптированных пользователей (вы были заранее предупреждены).

Цель программы — предоставить конфиденциальное, аутентифицированное хранилище и сотрудничество в системе Git, используя типичные недоверенные хосты или сервисы для хранения данных.

Установка

  • используйте менеджер пакетов вашей системы GNU/Linux — известно, что такие дистрибутивы, как Debian, Ubuntu, Fedora, Arch и некоторые более мелкие дистрибутивы, имеют пакеты для установки;
  • запустите предоставленный скрипт install.sh на других системах.

Быстрый старт ==============Создайте зашифрованный удалённый репозиторий путём выполнения команды push к нему:

git remote add cryptremote gcrypt::rsync://example.com:repo
git push cryptremote master
> gcrypt: Настройка нового репозитория
> gcrypt: Удалённый ID: :id:7VigUnLVYVtZx8oir34R
> [ещё строки ...]
> Отправка в gcrypt::[...]
> * [новая ветвь] master -> master

Конфигурация

Поддерживаются следующие переменные окружения git-config(1):

remote.<name>.gcrypt-participants
gcrypt.participants

Пробел-разделенный список идентификаторов ключей GPG. Репозиторий шифруется для этих участников, и принимаются только подписи от этих участников. Команда gpg -k выводит все известные вам открытые ключи.

Если эта опция не установлена, шифрование выполняется по умолчанию для вашего ключа, и принимаются любые действительные подписи. Это поведение можно явно запросить, установив участников в значение simple.

Опция gcrypt-participants на удаленном сервере имеет приоритет над переменной репозитория gcrypt.participants.

remote.<name>.gcrypt-publish-participants
gcrypt.publish-participants
По умолчанию идентификаторы ключей участников маскируются шифрованием с помощью команды gpg -R. Установка этой опции в значение true отключает эту меру безопасности. Проблема использования команды gpg -R заключается в том, что при дешифровании gpg последовательно проверяет каждый доступный секретный ключ до тех пор, пока не найдет подходящий ключ. Это может привести к ненужным запросам пароля.``gcrypt.gpg-args`` Содержимое этого параметра передается как аргументы командной строки для gpg. Например, --use-agent.
remote.<name>.gcrypt-signingkey
user.signingkey
(Последний из обычной конфигурации git) Ключ для подписи. Вы должны установить параметр user.signingkey, если ваш основной ключ подписи не является частью списка участников. Вы можете использовать версию для каждого удалённого сервера, чтобы подписывать различные удалённые серверы с использованием различных ключей.
remote.<name>.gcrypt-rsync-put-flags
gcrypt.rsync-put-flags
Флаги, передаваемые в rsync при загрузке данных на удалённый сервер с использованием бэкэнда rsync://. Если эти флаги установлены для конкретного удалённого сервера, глобальные флаги, если они также установлены, не будут применяться для данного удалённого сервера.

Переменные окружения

GCRYPT_FULL_REPACK
Когда эта переменная окружения установлена (на любое значение), она заставляет выполнить полную сборку при отправке.

Примеры

Как настроить удалённый сервер для двух участников:

git remote add cryptremote gcrypt::rsync://example.com:repo
git config remote.cryptremote.gcrypt-participants "KEY1 KEY2"
git push cryptremote master

Как использовать бэкэнд git:

# обратите внимание, что целевой репозиторий git должен уже существовать,
# и его ветка `next` будет перезаписана!
git remote add gitcrypt gcrypt::git@example.com:repo#next
git push gitcrypt masterФрагмент URL (``#next`` здесь) указывает на используемую ветку бэкэнда.

Примечания

Сотрудничество
Шифрование манифеста обновляется для каждого пуша, чтобы соответствовать конфигурации участников. Каждый пользователь, выполняющий пуш, должен иметь открытые ключи всех участников и правильную конфигурацию участников.
Зависимости
rsync, curl и rclone для удаленных серверов rsync:, sftp: и rclone: соответственно. Основной исполняемый файл требует POSIX-совместимой оболочки, поддерживающей local.
GNU Privacy Guard
Поддерживаются как GPG 1.4, так и 2. Вам нужен личный ключ GPG. Конфигурация GPG применяется к выбору алгоритмов для шифрования с открытым ключом, симметричного шифрования и подписывания. Для получения более подробной информации см. man gpg.
Удалённый ID
Удалённый ID не является секретным; он гарантирует лишь то, что два репозитория, подписанные одним и тем же пользователем, можно различить. Вы получите предупреждение, если удалённый ID изменится, что должно произойти только в случае переоткрытия удалённого репозитория.Производительность Использование произвольного <giturl> или URI sftp:// требует загрузки всей истории репозитория с каждым пushом. Если история вашего репозитория большая или вы выполняете пуш через медленное соединение, рассмотрите возможность использования транспорта rsync://, который поддерживает прогрессивные пуски. Обратите внимание, что последний вариант не будет работать с сервисами хостинга репозиториев, такими как Gitolite, GitHub или GitLab.URI rsync Отмечается, что формат URI для бэкэнда rsync, к сожалению, нестандартен. git-remote-gcrypt использует rsync://user@host:path, в то время как обычный rsync использует либо user@host:path, либо rsync://user@host/path.
Бэкенд rclone

В дополнение к добавлению бэкенда rclone как удалённого репозитория с URI типа gcrypt::rclone://remote:subdir вам также необходимо добавить этот удалённый репозиторий в конфигурацию rclone. Это обычно делается путём выполнения команды rclone config. Смотрите rclone(1).

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

Формат репозитория ...................| EncSign(X): Подписать и зашифровать для владельца ключа GPG | Encrypt(K,X): Зашифровать с использованием симметричного алгоритма | Hash(X): SHA-256 | | B: список ветвей | L: список хэшей (Hi) и ключей (Ki) для каждого файла пакета | R: удалённый ID | | Для записи репозитория: | | Сохраните каждый файл пакета P как Encrypt(Ki, P)P' в файле с именем Hi, | где Ki — это новая случайная строка, а Hash(P')Hi. | Сохраните EncSign(B || L || R) в манифесте. | | Для чтения репозитория: | | Получите манифест, расшифруйте и проверьте с помощью набора ключей GPG → (B, L, R). | Предупредите пользователя, если R не совпадает с ранее виденным удалённым ID. | Для каждого Hi, Ki в L: | Получите файл Hi с сервера → P'. | Проверьте, что Hash(P') совпадает с Hi. | Расшифруйте P' с помощью KiP, затем откройте P с помощью git.Файл манифеста ...............

Пример файла манифеста (с многоточием для краткости)::
$ gpg -d 91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a 542051c7cd152644e4995bda63cc3ddffd635958 refs/heads/next 3c9e76484c7596eff70b21cbe58408b2774bedad refs/heads/master pack :SHA256:f2ad50316...cd4ba67092dc4 z8YoAnFpMlW...3PkI2mND49P1qm pack :SHA256:a6e17bb4c...426492f379584 82+k2cbiUn7...dgXfyX6wXGpvVa keep :SHA256:f2ad50316...cd4ba67092dc4 1 repo :id:OYiSleGirtLubEVqJpFF

Каждый элемент продолжается до новой строки и соответствует одному из следующих вариантов:

<sha-1> <gitref>
Id объекта Git и его ссылка
pack :<hashtype>:<hash> <key>
Хэш пакетного файла (Hi) и соответствующий симметричный ключ (Ki).
keep :<hashtype>:<hash> <generation>
Хэш пакетного файла и его поколение переупаковки
repo <id>
Id удаленного репозитория
extn <name> ...
Сохраняемое расширительное поле, которое остается нетронутым, но не используется.

Обнаружение gcrypt репозиториев

Чтобы проверить, является ли git url gcrypt репозиторием, используйте команду: git-remote-gcrypt --check url Код выхода равен 0, если репозиторий существует и может быть расшифрован, 1, если репозиторий использует gcrypt, но не может быть расшифрован, и 100, если репозиторий не зашифрован gcrypt (или недоступен).

Учитывайте, что это требует загрузки содержимого репозитория в локальный git репозиторий, то же самое, как при использовании gcrypt репозитория.

Известные проблемы ===================Каждый git push фактически выполняется с параметром --force. Убедитесь, что вы выполните pull перед push.

Программа git-remote-gcrypt может решить переупаковать удалённый репозиторий без предварительного уведомления, что означает, что ваш push может внезапно занять значительно больше времени, чем ожидалось, так как вся история будет заново загружена. Этот push может завершиться ошибкой через медленное соединение.

Программа git-remote-gcrypt может сообщить, что репозиторий "не найден", когда репозиторий действительно существует, но программа git-remote-gcrypt сталкивается с проблемами аутентификации, порта или сетевой доступности.

См. также

`git-remote-helpers`(1), `gpg`(1)

Авторы

Первоначальным автором программы git-remote-gcrypt был пользователь GitHub bluss.

Действующим поддерживателем в 2013 и 2014 годах был Джои Гесс.

Текущим поддерживателем, начиная с 2016 года, является Син Уиттон <spwhitton@spwhitton.name>.

Лицензия

Это документация и программа git-remote-gcrypt распространяются под одинаковыми условиями лицензии GPL-3 (или более ранней версии); см. файл git-remote-gcrypt.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

PGP-encrypted git remotes Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vcs-all-in-one-git-remote-gcrypt.git
git@api.gitlife.ru:oschina-mirror/vcs-all-in-one-git-remote-gcrypt.git
oschina-mirror
vcs-all-in-one-git-remote-gcrypt
vcs-all-in-one-git-remote-gcrypt
master