13 авг 2022 · 10:05    
{"document": [{"text": [{"type": "string", "attributes": {}, "string": "Вы могли видеть, что некоторые коммиты из "}, {"type": "string", "attributes": {"bold": true}, "string": "merge-requests"}, {"type": "string", "attributes": {}, "string": " или "}, {"type": "string", "attributes": {"bold": true}, "string": "Dependabot "}, {"type": "string", "attributes": {}, "string": "имеют значок с надписью "}, {"type": "string", "attributes": {"bold": true}, "string": "verified"}, {"type": "string", "attributes": {}, "string": ". Но у ваших коммитов нет этого модного значка?"}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"caption": "Детали верифицированного коммита на GitHub", "presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/png", "filename": "13.08.2022.02.png", "filesize": 99875, "height": 277, "pic_id": 124257, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.02.jpeg", "width": 891}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Зачем беспокоиться о проверенных коммитах?"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Это правильный вопрос, который в основном сводится к безопасности в наше время."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Мы по-прежнему в основном работаем удаленно/из дома. Это означает, что у компаний, на которые мы работаем, возникает много вопросов о том, безопасно ли то, что мы делаем дома. Когда вы задаете конфигурацию "}, {"type": "string", "attributes": {"bold": true}, "string": "git"}, {"type": "string", "attributes": {}, "string": ", вы вводите определенный email и имя пользователя. И выдаёте себя за другого человека. Это, конечно, немного странно."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/jpeg", "filename": "13.08.2022.01.jpg", "filesize": 62351, "height": 1080, "pic_id": 124258, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.01.jpeg", "width": 1920}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Если посмотреть на частные репозитории, это имеет смысл. Вы используете какой-то SSH-ключ для фиксации в "}, {"type": "string", "attributes": {"bold": true}, "string": "git"}, {"type": "string", "attributes": {}, "string": ", но вы все равно можете притвориться, например, коллегой. Вот против чего будут направлены проверенные коммиты. Они будут проверять, что коммит подписан от имени конкретного пользователя."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Настройка верифицированных коммитов на GitHub"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "GitHub использует криптографические подписи в виде ключа GNU Privacy Guard (GPG). Такой ключ бывает открытым, который мы установим в GitHub, и закрытым, который находится на нашем компьютере. В следующий раз, когда мы отправим коммит в GitHub, он будет использовать этот ключ и зашифрует наш коммит и данные. На сайте GitHub он будет расшифровываться и проверять, что это правильный пользователь."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Шаг 1. Установите GPG"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Мы будем использовать "}, {"type": "string", "attributes": {"bold": true}, "string": "Homebrew"}, {"type": "string", "attributes": {}, "string": ", так как это самый быстрый способ установки. Выполните следующую команду в терминале:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "brew install gpg"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Шаг 2 Генерирование нового ключа GPG"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь мы можем использовать команду "}, {"type": "string", "attributes": {"bold": true}, "string": "GPG "}, {"type": "string", "attributes": {}, "string": "для генерации нового ключа. Выполните следующую команду в терминале:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "gpg --full-generate-key"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Это вызовет программу "}, {"type": "string", "attributes": {"bold": true}, "string": "CLI"}, {"type": "string", "attributes": {}, "string": ", которая проведет вас через весь процесс генерации."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"caption": "CLI для генерации ключей GPG", "presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/png", "filename": "13.08.2022.03.png", "filesize": 609065, "height": 1446, "pic_id": 124260, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.03.jpeg", "width": 1364}}], "attributes": []}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Помните о следующих настройках:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Мы выбираем ключ RSA (вариант 1)."}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Размер ключа должен быть МИНИМУМ 4096 бит"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Мы устанавливаем, что срок его действия никогда не истекает (вариант 0)"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "Имя и электронная почта. Используйте свой email на GitHub, иначе ничего не получится!"}], "attributes": ["bulletList", "bullet"]}, {"text": [{"type": "string", "attributes": {}, "string": "После этого дважды появится поле для ввода пароля. Используйте надежный пароль:"}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"caption": "GPG, защищенный паролем", "presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/png", "filename": "13.08.2022.04.png", "filesize": 42558, "height": 356, "pic_id": 124261, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.04.jpeg", "width": 876}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Шаг 3 Проверка ключа GPG"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь, когда мы создали ключ, давайте проверим, правильно ли он настроен. Выполните следующую команду в терминале:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "gpg --list-secret-keys --keyid-format LONG"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "В результате должно получиться что-то вроде этого:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "[SCRAMBLING NOT REALLY IMPORTANT]\n--------------------------------------\nsec rsa4096/[THIS_KEY_ID] 2021-07-07 [SC]\n 2B18EEB732D15480D40A60D605AE1785E201CE95\nuid [ultimate] Chris Bongers <chrisbongers@gmail. com>\nssb rsa4096/C98A99F6B0202433 2021-07-07 [E]"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Обратите внимание, мы добавили "}, {"type": "string", "attributes": {"bold": true}, "string": "[THIS_KEY_ID]"}, {"type": "string", "attributes": {}, "string": ", который будет содержать ключ, важный для выполнения коммитов."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Шаг 4 Экспортируйте ключ в GitHub"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь мы должны быть в состоянии создать экспорт этого ключа для использования в GitHub. С "}, {"type": "string", "attributes": {"bold": true}, "string": "[THIS_KEY_ID]"}, {"type": "string", "attributes": {}, "string": ", который вы получили в шаге 3, выполните следующую команду:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "gpg --armor --export [THIS_KEY_ID]."}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "В результате будет сгенерирован большой блок кода:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n[SCRAMBLE]\n-----END PGP PUBLIC KEY BLOCK-----"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Скопируйте весь этот раздел, включая комментарии."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь зайдите на GitHub, нажмите на изображение своего профиля -> Настройки. Выберите SSH и GPG Keys в левом меню, прокрутите вниз и добавьте новый GPG ключ."}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"caption": "Ключи GitHub", "presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/png", "filename": "13.08.2022.05.png", "filesize": 227043, "height": 1122, "pic_id": 124262, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.05.jpeg", "width": 2108}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Скопируйте этот блок кода в редакторе и нажмите сохранить. Теперь у вас должен быть настроен GPG-ключ."}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Шаг 5 Настройка git always для подписи коммитов"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Давайте включим клиент Git, чтобы он всегда подписывал коммиты нашим новым ключом. Выполните следующие команды в терминале."}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "git config --global user. signingkey [THIS_KEY_ID]\ngit config --global commit. gpgsign true"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь попробуйте зафиксировать один из ваших проектов. Должен появиться проверенный коммит, как показано здесь:"}], "attributes": []}, {"text": [{"type": "attachment", "attributes": {"caption": "Верифицированный коммит на GitHub", "presentation": "gallery"}, "attachment": {"caption": "", "contentType": "image/png", "filename": "13.08.2022.06.png", "filesize": 129984, "height": 436, "pic_id": 124263, "url": "https://storage.yandexcloud.net/pabliko.files/article_cloud_image/2022/08/13/13.08.2022.06.jpeg", "width": 1470}}], "attributes": []}, {"text": [{"type": "string", "attributes": {}, "string": "Устранение неполадок"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {}, "string": "Если у вас возникли проблемы с последней частью и терминал выдаёт, что коммит не может быть проверен, вы можете попробовать следующее:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "echo «test» | gpg --clearsign"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Если снова выдаёт ошибку, используйте следующую команду:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "export GPG_TTY=$ (tty)"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Теперь повторите команду, и вы должны увидеть подпись PGP. Это также может помочь убить gpg-клиент, чтобы он запросил пароль в первый раз:"}], "attributes": []}, {"text": [{"type": "string", "attributes": {"italic": true}, "string": "gpgconf --kill all\ngpg-agent --daemon"}], "attributes": ["quote"]}, {"text": [{"type": "string", "attributes": {}, "string": "Заключение"}], "attributes": ["heading1"]}, {"text": [{"type": "string", "attributes": {"bold": true}, "string": "Понравилась статья? Тогда Ставьте лайки, пишите комментарии, делитесь ею с друзьями, а также подписывайтесь на нас тут и на остальных платформах (ссылки в шапке профиля)."}], "attributes": []}], "selectedRange": [0, 4408]}
Комментарии 1