Manual section: | 1 |
---|
Программа git-remote-gcrypt является помощником для работы с удаленными репозиториями в системе Git, позволяющим выполнять операции push и pull для зашифрованных репозиториев с использованием GnuPG. Этот помощник обрабатывает URI, начинающиеся с префикса gcrypt::.
Поддерживаемыми бэкендами являются local, rsync:// и sftp://, где репозиторий хранится как набор файлов, а также любой <giturl>, где gcrypt будет хранить ту же самую представление в репозитории Git, используя произвольный транспорт Git. Для сравнения производительности см. раздел «Производительность» ниже.
Также существует экспериментальный бэкенд rclone:// для ранних адаптированных пользователей (вы были заранее предупреждены).
Цель программы — предоставить конфиденциальное, аутентифицированное хранилище и сотрудничество в системе Git, используя типичные недоверенные хосты или сервисы для хранения данных.
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
user.signingkey
, если ваш основной ключ подписи не является частью списка участников. Вы можете использовать версию для каждого удалённого сервера, чтобы подписывать различные удалённые серверы с использованием различных ключей.remote.<name>.gcrypt-rsync-put-flags
gcrypt.rsync-put-flags
rsync
при загрузке данных на удалённый сервер с использованием бэкэнда rsync://
. Если эти флаги установлены для конкретного удалённого сервера, глобальные флаги, если они также установлены, не будут применяться для данного удалённого сервера.Как настроить удалённый сервер для двух участников:
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
.man gpg
.rsync://user@host:path
, в то время как обычный rsync использует либо user@host:path
, либо rsync://user@host/path
.В дополнение к добавлению бэкенда 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' с помощью Ki → P, затем откройте P с помощью git.Файл манифеста ...............
Каждый элемент продолжается до новой строки и соответствует одному из следующих вариантов:
<sha-1> <gitref>
pack :<hashtype>:<hash> <key>
keep :<hashtype>:<hash> <generation>
repo <id>
extn <name> ...
Чтобы проверить, является ли 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 )