[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/basic-git-commands-cheatsheet":3,"mdc-77q4dy-key":840,"mdc-koo80o-key":867,"mdc--mswzcd-key":888,"mdc-j8dg5r-key":905,"mdc-vlwjbr-key":947,"mdc--5jmjrh-key":955,"mdc-wt46b8-key":963,"mdc--af1d0-key":971,"mdc-gqttf2-key":979,"mdc-z15aqv-key":987,"related-/guides/linux/git-branching-basics,/errors/git/fatal-not-a-git-repository,/guides/linux/setting-up-ssh-keys-git":995},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":773,"code":773,"createdAt":774,"description":775,"difficulty":776,"draft":777,"estimatedTime":778,"extension":779,"faq":780,"howToSteps":793,"howToTotalTime":812,"image":773,"keywords":813,"locale":822,"meta":823,"navigation":824,"path":825,"platform":826,"related":827,"section":831,"seo":832,"severity":773,"stem":833,"summary":834,"tags":835,"twitterCreator":773,"twitterSite":773,"type":838,"updatedAt":774,"__hash__":839},"content_ru/guides/linux/basic-git-commands-cheatsheet.md","Основные команды Git для Linux: шпаргалка начинающего",[7,8,9,10,11],"Git 2.30+","Ubuntu 20.04+","Debian 11+","Fedora 35+","Any Linux with bash","FixPedia Team",{"type":14,"value":15,"toc":761},"minimark",[16,21,25,29,32,74,78,81,86,124,129,145,150,168,171,184,191,195,198,233,239,243,246,272,275,289,299,302,306,316,407,411,414,439,454,470,484,488,493,614,618,621,651,655,757],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24],"p",{},"Git — это распределённая система контроля версий, которая стала стандартом в разработке программного обеспечения. Она позволяет отслеживать изменения в коде, возвращаться к предыдущим версиям, работать параллельно над разными задачами в отдельных ветках и эффективно сотрудничать в команде. Понимание базовых команд Git — обязательный навык для любого разработчика, DevOps-инженера или технического специалиста, работающего с кодом. Эта шпаргалка даст вам практическую базу для повседневной работы с Git в терминале Linux.",[17,26,28],{"id":27},"требования-подготовка","Требования / Подготовка",[22,30,31],{},"Перед началом убедитесь, что у вас есть:",[33,34,35,43,49,55],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"Установленный Git."," Минимальная версия — 2.30.",[36,44,45,48],{},[39,46,47],{},"Доступ к терминалу"," (bash, zsh).",[36,50,51,54],{},[39,52,53],{},"Учётная запись"," на платформе с удалённым репозиторием (GitHub, GitLab, Bitbucket), если планируете работать с удалёнными репозиториями.",[36,56,57,60,61,65,66,69,70,73],{},[39,58,59],{},"Базовые навыки"," работы в командной строке Linux (навигация по каталогам ",[62,63,64],"code",{},"cd",", создание/удаление файлов ",[62,67,68],{},"touch",", ",[62,71,72],{},"rm",").",[17,75,77],{"id":76},"шаг-1-установка-git","Шаг 1: Установка Git",[22,79,80],{},"Если Git ещё не установлен, выполните команду для вашего дистрибутива.",[22,82,83],{},[39,84,85],{},"Для Ubuntu/Debian:",[87,88,93],"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install git\n","bash","",[62,94,95,111],{"__ignoreMap":92},[96,97,100,104,108],"span",{"class":98,"line":99},"line",1,[96,101,103],{"class":102},"sScJk","sudo",[96,105,107],{"class":106},"sZZnC"," apt",[96,109,110],{"class":106}," update\n",[96,112,114,116,118,121],{"class":98,"line":113},2,[96,115,103],{"class":102},[96,117,107],{"class":106},[96,119,120],{"class":106}," install",[96,122,123],{"class":106}," git\n",[22,125,126],{},[39,127,128],{},"Для Fedora/RHEL/CentOS:",[87,130,132],{"className":89,"code":131,"language":91,"meta":92,"style":92},"sudo dnf install git\n",[62,133,134],{"__ignoreMap":92},[96,135,136,138,141,143],{"class":98,"line":99},[96,137,103],{"class":102},[96,139,140],{"class":106}," dnf",[96,142,120],{"class":106},[96,144,123],{"class":106},[22,146,147],{},[39,148,149],{},"Для Arch Linux:",[87,151,153],{"className":89,"code":152,"language":91,"meta":92,"style":92},"sudo pacman -S git\n",[62,154,155],{"__ignoreMap":92},[96,156,157,159,162,166],{"class":98,"line":99},[96,158,103],{"class":102},[96,160,161],{"class":106}," pacman",[96,163,165],{"class":164},"sj4cs"," -S",[96,167,123],{"class":106},[22,169,170],{},"После установки проверьте версию:",[87,172,174],{"className":89,"code":173,"language":91,"meta":92,"style":92},"git --version\n",[62,175,176],{"__ignoreMap":92},[96,177,178,181],{"class":98,"line":99},[96,179,180],{"class":102},"git",[96,182,183],{"class":164}," --version\n",[22,185,186,187,190],{},"Вывод должен быть примерно таким: ",[62,188,189],{},"git version 2.43.0",".",[17,192,194],{"id":193},"шаг-2-настройка-пользователя","Шаг 2: Настройка пользователя",[22,196,197],{},"Git需要知道, кто делает коммиты. Настройте ваше имя и email один раз для всей системы.",[87,199,201],{"className":89,"code":200,"language":91,"meta":92,"style":92},"git config --global user.name \"Ваше Имя и Фамилия\"\ngit config --global user.email \"ваш.email@example.com\"\n",[62,202,203,219],{"__ignoreMap":92},[96,204,205,207,210,213,216],{"class":98,"line":99},[96,206,180],{"class":102},[96,208,209],{"class":106}," config",[96,211,212],{"class":164}," --global",[96,214,215],{"class":106}," user.name",[96,217,218],{"class":106}," \"Ваше Имя и Фамилия\"\n",[96,220,221,223,225,227,230],{"class":98,"line":113},[96,222,180],{"class":102},[96,224,209],{"class":106},[96,226,212],{"class":164},[96,228,229],{"class":106}," user.email",[96,231,232],{"class":106}," \"ваш.email@example.com\"\n",[22,234,235,236,190],{},"Эти данные будут использоваться по умолчанию во всех ваших репозиториях. Для проверки настроек выполните ",[62,237,238],{},"git config --list",[17,240,242],{"id":241},"шаг-3-клонирование-существующего-репозитория","Шаг 3: Клонирование существующего репозитория",[22,244,245],{},"Чтобы начать работать с проектом, который уже существует на удалённом сервере, склонируйте его. Это создаст полную локальную копию.",[87,247,249],{"className":89,"code":248,"language":91,"meta":92,"style":92},"git clone \u003CURL_репозитория>\n",[62,250,251],{"__ignoreMap":92},[96,252,253,255,258,262,265,269],{"class":98,"line":99},[96,254,180],{"class":102},[96,256,257],{"class":106}," clone",[96,259,261],{"class":260},"szBVR"," \u003C",[96,263,264],{"class":106},"URL_репозитори",[96,266,268],{"class":267},"sVt8B","я",[96,270,271],{"class":260},">\n",[22,273,274],{},"Например:",[87,276,278],{"className":89,"code":277,"language":91,"meta":92,"style":92},"git clone https://github.com/username/project-name.git\n",[62,279,280],{"__ignoreMap":92},[96,281,282,284,286],{"class":98,"line":99},[96,283,180],{"class":102},[96,285,257],{"class":106},[96,287,288],{"class":106}," https://github.com/username/project-name.git\n",[22,290,291,292,295,296,190],{},"Команда создаст каталог ",[62,293,294],{},"project-name"," и скопирует туда все файлы и историю коммитов. Перейдите в него: ",[62,297,298],{},"cd project-name",[300,301],"in-article-ad",{},[17,303,305],{"id":304},"шаг-4-добавление-файлов-и-создание-коммита","Шаг 4: Добавление файлов и создание коммита",[22,307,308,309,312,313,190],{},"Локальные изменения проходят два этапа: ",[39,310,311],{},"индексация (staging)"," и ",[39,314,315],{},"фиксация (commit)",[317,318,319,337,380],"ol",{},[36,320,321,324,325],{},[39,322,323],{},"Проверьте статус"," репозитория, чтобы увидеть изменённые и новые файлы:",[87,326,328],{"className":89,"code":327,"language":91,"meta":92,"style":92},"git status\n",[62,329,330],{"__ignoreMap":92},[96,331,332,334],{"class":98,"line":99},[96,333,180],{"class":102},[96,335,336],{"class":106}," status\n",[36,338,339,342,343,358,361,362,365,366],{},[39,340,341],{},"Добавьте конкретные файлы"," в индекс (staging area), чтобы они были готовы к коммиту:",[87,344,346],{"className":89,"code":345,"language":91,"meta":92,"style":92},"git add filename.txt\n",[62,347,348],{"__ignoreMap":92},[96,349,350,352,355],{"class":98,"line":99},[96,351,180],{"class":102},[96,353,354],{"class":106}," add",[96,356,357],{"class":106}," filename.txt\n",[359,360],"br",{},"Или добавьте ",[39,363,364],{},"все"," изменённые и новые файлы (кроме игнорируемых):",[87,367,369],{"className":89,"code":368,"language":91,"meta":92,"style":92},"git add .\n",[62,370,371],{"__ignoreMap":92},[96,372,373,375,377],{"class":98,"line":99},[96,374,180],{"class":102},[96,376,354],{"class":106},[96,378,379],{"class":106}," .\n",[36,381,382,385,386,404,406],{},[39,383,384],{},"Зафиксируйте (сделайте коммит)"," изменения в локальной истории. Комментарий должен быть кратким и осмысленным:",[87,387,389],{"className":89,"code":388,"language":91,"meta":92,"style":92},"git commit -m \"Описание сделанных изменений\"\n",[62,390,391],{"__ignoreMap":92},[96,392,393,395,398,401],{"class":98,"line":99},[96,394,180],{"class":102},[96,396,397],{"class":106}," commit",[96,399,400],{"class":164}," -m",[96,402,403],{"class":106}," \"Описание сделанных изменений\"\n",[359,405],{},"Коммит создан только локально. Он не виден на удалённом сервере.",[17,408,410],{"id":409},"шаг-5-отправка-изменений-на-удалённый-сервер","Шаг 5: Отправка изменений на удалённый сервер",[22,412,413],{},"После создания коммита его нужно отправить в центральный репозиторий, чтобы другие могли его увидеть.",[87,415,417],{"className":89,"code":416,"language":91,"meta":92,"style":92},"git push origin \u003Cимя_ветки>\n",[62,418,419],{"__ignoreMap":92},[96,420,421,423,426,429,431,434,437],{"class":98,"line":99},[96,422,180],{"class":102},[96,424,425],{"class":106}," push",[96,427,428],{"class":106}," origin",[96,430,261],{"class":260},[96,432,433],{"class":106},"имя_ветк",[96,435,436],{"class":267},"и",[96,438,271],{"class":260},[22,440,441,442,445,446,449,450,453],{},"По умолчанию при клонировании удалённый сервер называется ",[62,443,444],{},"origin",", а ветка — ",[62,447,448],{},"main"," или ",[62,451,452],{},"master",". Поэтому часто достаточно:",[87,455,457],{"className":89,"code":456,"language":91,"meta":92,"style":92},"git push origin main\n",[62,458,459],{"__ignoreMap":92},[96,460,461,463,465,467],{"class":98,"line":99},[96,462,180],{"class":102},[96,464,425],{"class":106},[96,466,428],{"class":106},[96,468,469],{"class":106}," main\n",[22,471,472,473,476,477,480,481,190],{},"При первом ",[62,474,475],{},"push"," для новой ветки может потребоваться указать ",[62,478,479],{},"-u"," для установки отслеживания: ",[62,482,483],{},"git push -u origin feature-branch",[17,485,487],{"id":486},"шаг-6-работа-с-ветками","Шаг 6: Работа с ветками",[22,489,490,491,190],{},"Ветки (branches) позволяют изолировать разработку новых функций или исправления. Основная ветка обычно называется ",[62,492,448],{},[33,494,495,538,572,592],{},[36,496,497,500,518,520,521],{},[39,498,499],{},"Создать новую ветку и переключиться на неё:",[87,501,503],{"className":89,"code":502,"language":91,"meta":92,"style":92},"git checkout -b feature-login\n",[62,504,505],{"__ignoreMap":92},[96,506,507,509,512,515],{"class":98,"line":99},[96,508,180],{"class":102},[96,510,511],{"class":106}," checkout",[96,513,514],{"class":164}," -b",[96,516,517],{"class":106}," feature-login\n",[359,519],{},"Или используйте современный синтаксис:",[87,522,524],{"className":89,"code":523,"language":91,"meta":92,"style":92},"git switch -c feature-login\n",[62,525,526],{"__ignoreMap":92},[96,527,528,530,533,536],{"class":98,"line":99},[96,529,180],{"class":102},[96,531,532],{"class":106}," switch",[96,534,535],{"class":164}," -c",[96,537,517],{"class":106},[36,539,540,543,556,558,559],{},[39,541,542],{},"Переключиться между существующими ветками:",[87,544,546],{"className":89,"code":545,"language":91,"meta":92,"style":92},"git checkout main\n",[62,547,548],{"__ignoreMap":92},[96,549,550,552,554],{"class":98,"line":99},[96,551,180],{"class":102},[96,553,511],{"class":106},[96,555,469],{"class":106},[359,557],{},"или",[87,560,562],{"className":89,"code":561,"language":91,"meta":92,"style":92},"git switch main\n",[62,563,564],{"__ignoreMap":92},[96,565,566,568,570],{"class":98,"line":99},[96,567,180],{"class":102},[96,569,532],{"class":106},[96,571,469],{"class":106},[36,573,574,577],{},[39,575,576],{},"Получить список всех веток (локальных и удалённых):",[87,578,580],{"className":89,"code":579,"language":91,"meta":92,"style":92},"git branch -a\n",[62,581,582],{"__ignoreMap":92},[96,583,584,586,589],{"class":98,"line":99},[96,585,180],{"class":102},[96,587,588],{"class":106}," branch",[96,590,591],{"class":164}," -a\n",[36,593,594,597,598],{},[39,595,596],{},"Удалить локальную ветку"," (после её слияния в основную):",[87,599,601],{"className":89,"code":600,"language":91,"meta":92,"style":92},"git branch -d feature-login\n",[62,602,603],{"__ignoreMap":92},[96,604,605,607,609,612],{"class":98,"line":99},[96,606,180],{"class":102},[96,608,588],{"class":106},[96,610,611],{"class":164}," -d",[96,613,517],{"class":106},[17,615,617],{"id":616},"проверка-результата","Проверка результата",[22,619,620],{},"Убедитесь, что операции выполнены корректно:",[317,622,623,634,640],{},[36,624,625,626,629,630,633],{},"После ",[62,627,628],{},"git commit"," проверьте историю коммитов: ",[62,631,632],{},"git log --oneline",". Новый коммит должен быть вверху списка.",[36,635,625,636,639],{},[62,637,638],{},"git push"," откройте страницу вашего репозитория на GitHub/GitLab. Новый коммит должен отображаться в списке коммитов.",[36,641,642,643,646,647,650],{},"После создания/переключения ветки выполните ",[62,644,645],{},"git branch",". Звёздочка ",[62,648,649],{},"*"," покажет, на какой ветке вы сейчас находитесь.",[17,652,654],{"id":653},"возможные-проблемы","Возможные проблемы",[33,656,657,685,718],{},[36,658,659,190,665],{},[39,660,661,662],{},"Ошибка ",[62,663,664],{},"fatal: not a git repository",[33,666,667,673],{},[36,668,669,672],{},[39,670,671],{},"Причина:"," Вы находитесь не в каталоге Git-репозитория.",[36,674,675,678,679,681,682,190],{},[39,676,677],{},"Решение:"," Перейдите в корень клонированного репозитория (",[62,680,298],{},") или инициализируйте новый: ",[62,683,684],{},"git init",[36,686,687,190,695],{},[39,688,661,689,692,693],{},[62,690,691],{},"remote: Repository not found"," при ",[62,694,638],{},[33,696,697,705],{},[36,698,699,701,702,704],{},[39,700,671],{}," Неверный URL удалённого репозитория (",[62,703,444],{},") или отсутствие прав на запись.",[36,706,707,709,710,713,714,717],{},[39,708,677],{}," Проверьте URL: ",[62,711,712],{},"git remote -v",". При необходимости исправьте: ",[62,715,716],{},"git remote set-url origin \u003Cкорректный_URL>",". Убедитесь, что вы авторизованы на платформе (используйте SSH-ключ или токен).",[36,719,720,190,729],{},[39,721,722,723,449,726],{},"Конфликт слияния (merge conflict) при ",[62,724,725],{},"git pull",[62,727,728],{},"git merge",[33,730,731,736],{},[36,732,733,735],{},[39,734,671],{}," Одни и те же строки в файле были изменены в разных ветках.",[36,737,738,740,741,69,744,312,747,750,751,312,754,756],{},[39,739,677],{}," Git пометит конфликтующие файлы. Откройте их, найдите блоки между ",[62,742,743],{},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD",[62,745,746],{},"=======",[62,748,749],{},">>>>>>> branch-name",". Вручную отредактируйте файл, оставив нужную версию. Удалите маркеры конфликта. Затем выполните ",[62,752,753],{},"git add \u003Cfile>",[62,755,628],{}," для завершения слияния.",[758,759,760],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":92,"searchDepth":113,"depth":113,"links":762},[763,764,765,766,767,768,769,770,771,772],{"id":19,"depth":113,"text":20},{"id":27,"depth":113,"text":28},{"id":76,"depth":113,"text":77},{"id":193,"depth":113,"text":194},{"id":241,"depth":113,"text":242},{"id":304,"depth":113,"text":305},{"id":409,"depth":113,"text":410},{"id":486,"depth":113,"text":487},{"id":616,"depth":113,"text":617},{"id":653,"depth":113,"text":654},null,"2026-02-16 13:41:15","Освойте базовые команды Git на Linux с практическими примерами. Наша пошаговая шпаргалка поможет вам начать работать с контролем версий за 20 минут.","easy",false,"15-30 мин","md",[781,784,787,790],{"question":782,"answer":783},"Как установить Git на Ubuntu/Debian?","Используйте команду `sudo apt update && sudo apt install git`. Для Fedora: `sudo dnf install git`.",{"question":785,"answer":786},"В чём разница между `git commit` и `git push`?","`git commit` сохраняет изменения локально в истории репозитория. `git push` отправляет эти коммиты на удалённый сервер (например, GitHub).",{"question":788,"answer":789},"Как отменить последний коммит, но оставить изменения в рабочей директории?","Используйте `git reset --soft HEAD~1`. Это переместит HEAD назад, оставив все изменения проиндексированными.",{"question":791,"answer":792},"Что делать при конфликте слияния (merge conflict)?","Откройте файлы с конфликтами, найдите секции `\u003C\u003C\u003C\u003C\u003C\u003C\u003C`, `=======`, `>>>>>>>`, вручную исправьте их, затем выполните `git add \u003Cfile>` и `git commit`.",[794,797,800,803,806,809],{"name":795,"text":796},"Установите Git","Установите пакет Git через менеджер пакетов вашего дистрибутива. Это основа для всех последующих операций.",{"name":798,"text":799},"Настройте глобальные параметры","Задайте имя пользователя и email, которые будут привязаны к вашим коммитам. Эти данные появятся в истории изменений.",{"name":801,"text":802},"Склонируйте существующий репозиторий","Склонируйте удалённый репозиторий на локальную машину, чтобы начать работу над проектом.",{"name":804,"text":805},"Добавьте файлы и создайте коммит","Добавьте изменённые файлы в индекс (staging area) и зафиксируйте их в локальной истории репозитория.",{"name":807,"text":808},"Отправьте изменения на удалённый сервер","Загрузите ваши локальные коммиты на удалённый репозиторий (например, GitHub, GitLab), чтобы поделиться ими с командой.",{"name":810,"text":811},"Создайте и переключитесь на новую ветку","Создайте отдельную ветку для разработки новой функции или исправления бага, чтобы не затрагивать основную ветку (main/master).","PT20M",[814,815,816,817,818,819,820,821],"git команды linux","базовые команды git для начинающих","шпаргалка git linux","как использовать git в linux","git init clone commit push","управление версиями git linux","git для разработчиков linux","работа с git через терминал","ru_RU",{},true,"/guides/linux/basic-git-commands-cheatsheet","linux",[828,829,830],"/guides/linux/git-branching-basics","/errors/git/fatal-not-a-git-repository","/guides/linux/setting-up-ssh-keys-git","Гайды по Linux",{"title":5,"description":775},"guides/linux/basic-git-commands-cheatsheet","Это руководство познакомит вас с основными командами Git для управления версиями кода в среде Linux. Вы научитесь инициализировать репозитории, делать коммиты, работать с ветками и синхронизировать изменения с удалёнными серверами.",[180,826,836,91,837],"version-control","cheatsheet","guide","3Pyfdt-kIn14oDldD5XGxoRbXjba0ExW6KrcJoG9IJo",{"data":841,"body":842},{},{"type":843,"children":844},"root",[845],{"type":846,"tag":22,"props":847,"children":848},"element",{},[849,852,858,860,866],{"type":850,"value":851},"text","Используйте команду ",{"type":846,"tag":62,"props":853,"children":855},{"className":854},[],[856],{"type":850,"value":857},"sudo apt update && sudo apt install git",{"type":850,"value":859},". Для Fedora: ",{"type":846,"tag":62,"props":861,"children":863},{"className":862},[],[864],{"type":850,"value":865},"sudo dnf install git",{"type":850,"value":190},{"data":868,"body":869},{},{"type":843,"children":870},[871],{"type":846,"tag":22,"props":872,"children":873},{},[874,879,881,886],{"type":846,"tag":62,"props":875,"children":877},{"className":876},[],[878],{"type":850,"value":628},{"type":850,"value":880}," сохраняет изменения локально в истории репозитория. ",{"type":846,"tag":62,"props":882,"children":884},{"className":883},[],[885],{"type":850,"value":638},{"type":850,"value":887}," отправляет эти коммиты на удалённый сервер (например, GitHub).",{"data":889,"body":890},{},{"type":843,"children":891},[892],{"type":846,"tag":22,"props":893,"children":894},{},[895,897,903],{"type":850,"value":896},"Используйте ",{"type":846,"tag":62,"props":898,"children":900},{"className":899},[],[901],{"type":850,"value":902},"git reset --soft HEAD~1",{"type":850,"value":904},". Это переместит HEAD назад, оставив все изменения проиндексированными.",{"data":906,"body":907},{},{"type":843,"children":908},[909],{"type":846,"tag":22,"props":910,"children":911},{},[912,914,920,921,926,927,933,935,940,941,946],{"type":850,"value":913},"Откройте файлы с конфликтами, найдите секции ",{"type":846,"tag":62,"props":915,"children":917},{"className":916},[],[918],{"type":850,"value":919},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C",{"type":850,"value":69},{"type":846,"tag":62,"props":922,"children":924},{"className":923},[],[925],{"type":850,"value":746},{"type":850,"value":69},{"type":846,"tag":62,"props":928,"children":930},{"className":929},[],[931],{"type":850,"value":932},">>>>>>>",{"type":850,"value":934},", вручную исправьте их, затем выполните ",{"type":846,"tag":62,"props":936,"children":938},{"className":937},[],[939],{"type":850,"value":753},{"type":850,"value":312},{"type":846,"tag":62,"props":942,"children":944},{"className":943},[],[945],{"type":850,"value":628},{"type":850,"value":190},{"data":948,"body":949},{},{"type":843,"children":950},[951],{"type":846,"tag":22,"props":952,"children":953},{},[954],{"type":850,"value":796},{"data":956,"body":957},{},{"type":843,"children":958},[959],{"type":846,"tag":22,"props":960,"children":961},{},[962],{"type":850,"value":799},{"data":964,"body":965},{},{"type":843,"children":966},[967],{"type":846,"tag":22,"props":968,"children":969},{},[970],{"type":850,"value":802},{"data":972,"body":973},{},{"type":843,"children":974},[975],{"type":846,"tag":22,"props":976,"children":977},{},[978],{"type":850,"value":805},{"data":980,"body":981},{},{"type":843,"children":982},[983],{"type":846,"tag":22,"props":984,"children":985},{},[986],{"type":850,"value":808},{"data":988,"body":989},{},{"type":843,"children":990},[991],{"type":846,"tag":22,"props":992,"children":993},{},[994],{"type":850,"value":811},[996],{"id":997,"title":998,"appliesTo":999,"author":12,"body":1001,"canonical":773,"code":773,"createdAt":1923,"description":1924,"difficulty":776,"draft":777,"estimatedTime":1925,"extension":779,"faq":1926,"howToSteps":1939,"howToTotalTime":1958,"image":773,"keywords":1959,"locale":822,"meta":1968,"navigation":824,"path":830,"platform":826,"related":1969,"section":1973,"seo":1974,"severity":773,"stem":1975,"summary":1976,"tags":1977,"twitterCreator":773,"twitterSite":773,"type":838,"updatedAt":1923,"__hash__":1982},"content_ru/guides/linux/setting-up-ssh-keys-git.md","Настройка SSH-ключей для Git на Linux: полное руководство",[8,9,10,1000,7],"Arch Linux",{"type":14,"value":1002,"toc":1902},[1003,1005,1012,1037,1040,1042,1045,1120,1124,1129,1136,1243,1247,1252,1311,1313,1317,1332,1338,1397,1401,1404,1409,1448,1453,1479,1483,1486,1490,1505,1510,1524,1529,1554,1582,1604,1606,1613,1627,1633,1635,1642,1688,1694,1740,1747,1871,1875,1899],[17,1004,20],{"id":19},[22,1006,1007,1008,1011],{},"Работа с Git-репозиториями по протоколу HTTPS требует постоянного ввода логина и пароля (или токена). Это неудобно и небезопасно. ",[39,1009,1010],{},"SSH-ключи"," решают обе проблемы:",[33,1013,1014,1020],{},[36,1015,1016,1019],{},[39,1017,1018],{},"Безопасность:"," Используется пара криптографических ключей вместо пароля. Приватный ключ хранится только у вас.",[36,1021,1022,1025,1026,1029,1030,69,1032,449,1034,190],{},[39,1023,1024],{},"Удобство:"," После однократной настройки ",[62,1027,1028],{},"ssh-agent"," не нужно вводить никакие учетные данные при каждом ",[62,1031,638],{},[62,1033,725],{},[62,1035,1036],{},"git clone",[22,1038,1039],{},"Это руководство предназначено для пользователей Linux (Ubuntu, Debian, Fedora, Arch и др.) и поможет настроить бесшовную и безопасную работу с любым Git-хостингом, поддерживающим SSH (GitHub, GitLab, Bitbucket, собственный сервер).",[17,1041,28],{"id":27},[22,1043,1044],{},"Перед началом убедитесь, что:",[317,1046,1047,1057,1067,1070],{},[36,1048,1049,1050,1053,1054,190],{},"У вас есть установленный ",[39,1051,1052],{},"Git"," (версии 2.30+). Проверить: ",[62,1055,1056],{},"git --version",[36,1058,1059,1060,69,1063,1066],{},"У вас есть аккаунт на ",[39,1061,1062],{},"GitHub",[39,1064,1065],{},"GitLab"," или другом сервисе, куда вы планируете пушить код.",[36,1068,1069],{},"У вас есть доступ к терминалу (консоли) Linux с правами вашего обычного пользователя.",[36,1071,1072,1073,1078,1079,1092,1093],{},"Пакет ",[39,1074,1075],{},[62,1076,1077],{},"openssh-client"," установлен. Обычно он есть по умолчанию. Проверить можно командой:\n",[87,1080,1082],{"className":89,"code":1081,"language":91,"meta":92,"style":92},"ssh -V\n",[62,1083,1084],{"__ignoreMap":92},[96,1085,1086,1089],{"class":98,"line":99},[96,1087,1088],{"class":102},"ssh",[96,1090,1091],{"class":164}," -V\n","\nЕсли команда не найдена, установите пакет:\n",[33,1094,1095,1104,1112],{},[36,1096,1097,1100,1101],{},[39,1098,1099],{},"Ubuntu/Debian:"," ",[62,1102,1103],{},"sudo apt update && sudo apt install openssh-client",[36,1105,1106,1100,1109],{},[39,1107,1108],{},"Fedora:",[62,1110,1111],{},"sudo dnf install openssh-clients",[36,1113,1114,1100,1117],{},[39,1115,1116],{},"Arch:",[62,1118,1119],{},"sudo pacman -S openssh",[17,1121,1123],{"id":1122},"пошаговая-инструкция","Пошаговая инструкция",[1125,1126,1128],"h3",{"id":1127},"шаг-1-сгенерируйте-новую-ssh-ключевую-пару","Шаг 1: Сгенерируйте новую SSH-ключевую пару",[22,1130,1131,1132,1135],{},"Рекомендуется использовать современный и безопасный алгоритм ",[39,1133,1134],{},"ED25519",". Если ваша система очень старая и не поддерживает его, используйте RSA (минимум 4096 бит).",[317,1137,1138,1141,1187],{},[36,1139,1140],{},"Откройте терминал.",[36,1142,1143,1144,1147,1148,190,1151,1173],{},"Выполните команду генерации. Вам будет предложено выбрать место сохранения файла (по умолчанию ",[62,1145,1146],{},"~/.ssh/id_ed25519",") и задать ",[39,1149,1150],{},"парольную фразу (passphrase)",[87,1152,1154],{"className":89,"code":1153,"language":91,"meta":92,"style":92},"ssh-keygen -t ed25519 -C \"your_email@example.com\"\n",[62,1155,1156],{"__ignoreMap":92},[96,1157,1158,1161,1164,1167,1170],{"class":98,"line":99},[96,1159,1160],{"class":102},"ssh-keygen",[96,1162,1163],{"class":164}," -t",[96,1165,1166],{"class":106}," ed25519",[96,1168,1169],{"class":164}," -C",[96,1171,1172],{"class":106}," \"your_email@example.com\"\n",[33,1174,1175,1181],{},[36,1176,1177,1180],{},[62,1178,1179],{},"-t ed25519"," — тип ключа.",[36,1182,1183,1186],{},[62,1184,1185],{},"-C \"your_email@example.com\""," — комментарий, обычно указывают email, привязанный к аккаунту на Git-хостинге. Это удобно для идентификации.",[36,1188,1189,1192,1212,1214,1215,1218,1219],{},[39,1190,1191],{},"Настройте парольную фразу (passphrase):",[33,1193,1194,1202],{},[36,1195,1196,1199,1200,190],{},[39,1197,1198],{},"Сильная парольная фраза"," (рекомендуется): Защитит ваш приватный ключ, если кто-то получит физический доступ к вашему диску. Вам нужно будет ввести её один раз при запуске ",[62,1201,1028],{},[36,1203,1204,1207,1208,1211],{},[39,1205,1206],{},"Пустая парольная фраза:"," Ключ не будет защищен паролем. Удобно для автоматизации, но менее безопасно. Нажимайте ",[62,1209,1210],{},"Enter"," дважды, чтобы оставить поле пустым.",[359,1213],{},"В результате в директории ",[62,1216,1217],{},"~/.ssh/"," появятся два файла:",[33,1220,1221,1234],{},[36,1222,1223,1226,1227,1230,1231],{},[62,1224,1225],{},"id_ed25519"," — ",[39,1228,1229],{},"приватный ключ",". ",[39,1232,1233],{},"НИКОМУ НЕ ПОКАЗЫВАТЬ.",[36,1235,1236,1226,1239,1242],{},[62,1237,1238],{},"id_ed25519.pub",[39,1240,1241],{},"публичный ключ",". Его вы будете загружать на сервер.",[1125,1244,1246],{"id":1245},"шаг-2-запустите-и-добавьте-ключ-в-ssh-agent","Шаг 2: Запустите и добавьте ключ в ssh-agent",[22,1248,1249,1251],{},[62,1250,1028],{}," — это программа-посредник, которая хранит ваш разблокированный приватный ключ в памяти и подписывает запросы от вашего имени. Это избавляет от необходимости вводить парольную фразу при каждой операции с Git.",[317,1253,1254,1286],{},[36,1255,1256,1259,1260,1281,186,1283,190],{},[39,1257,1258],{},"Запустите агент"," (в большинстве современных дистрибутивов он запускается автоматически при входе в систему, но лучше убедиться):",[87,1261,1263],{"className":89,"code":1262,"language":91,"meta":92,"style":92},"eval \"$(ssh-agent -s)\"\n",[62,1264,1265],{"__ignoreMap":92},[96,1266,1267,1270,1273,1275,1278],{"class":98,"line":99},[96,1268,1269],{"class":164},"eval",[96,1271,1272],{"class":106}," \"$(",[96,1274,1028],{"class":102},[96,1276,1277],{"class":164}," -s",[96,1279,1280],{"class":106},")\"\n",[359,1282],{},[62,1284,1285],{},"Agent pid 12345",[36,1287,1288,1291,1292,1305,1307,1308,190],{},[39,1289,1290],{},"Добавьте ваш приватный ключ в агент",":",[87,1293,1295],{"className":89,"code":1294,"language":91,"meta":92,"style":92},"ssh-add ~/.ssh/id_ed25519\n",[62,1296,1297],{"__ignoreMap":92},[96,1298,1299,1302],{"class":98,"line":99},[96,1300,1301],{"class":102},"ssh-add",[96,1303,1304],{"class":106}," ~/.ssh/id_ed25519\n",[359,1306],{},"Если вы задали парольную фразу, система запросит её сейчас. После успешного добавления вы увидите сообщение ",[62,1309,1310],{},"Identity added: /home/username/.ssh/id_ed25519 (your_email@example.com)",[300,1312],{},[1125,1314,1316],{"id":1315},"шаг-3-скопируйте-публичный-ключ-в-буфер-обмена","Шаг 3: Скопируйте публичный ключ в буфер обмена",[22,1318,1319,1320,1323,1324,1327,1328,1331],{},"Вам нужно передать ",[39,1321,1322],{},"содержимое"," файла ",[62,1325,1326],{},"~/.ssh/id_ed25519.pub"," (целиком, включая ",[62,1329,1330],{},"ssh-ed25519 ... comment",") в настройки вашего аккаунта на Git-хостинге.",[22,1333,851,1334,1337],{},[62,1335,1336],{},"cat"," для вывода и перенаправление вывода в буфер обмена (или скопируйте вручную):",[87,1339,1341],{"className":89,"code":1340,"language":91,"meta":92,"style":92},"# Для систем с xclip (Ubuntu/Debian: sudo apt install xclip)\ncat ~/.ssh/id_ed25519.pub | xclip -selection clipboard\necho \"Публичный ключ скопирован в буфер обмена.\"\n\n# Альтернатива: просто выведите на экран и скопируйте мышкой\ncat ~/.ssh/id_ed25519.pub\n",[62,1342,1343,1349,1368,1377,1383,1389],{"__ignoreMap":92},[96,1344,1345],{"class":98,"line":99},[96,1346,1348],{"class":1347},"sJ8bj","# Для систем с xclip (Ubuntu/Debian: sudo apt install xclip)\n",[96,1350,1351,1353,1356,1359,1362,1365],{"class":98,"line":113},[96,1352,1336],{"class":102},[96,1354,1355],{"class":106}," ~/.ssh/id_ed25519.pub",[96,1357,1358],{"class":260}," |",[96,1360,1361],{"class":102}," xclip",[96,1363,1364],{"class":164}," -selection",[96,1366,1367],{"class":106}," clipboard\n",[96,1369,1371,1374],{"class":98,"line":1370},3,[96,1372,1373],{"class":164},"echo",[96,1375,1376],{"class":106}," \"Публичный ключ скопирован в буфер обмена.\"\n",[96,1378,1380],{"class":98,"line":1379},4,[96,1381,1382],{"emptyLinePlaceholder":824},"\n",[96,1384,1386],{"class":98,"line":1385},5,[96,1387,1388],{"class":1347},"# Альтернатива: просто выведите на экран и скопируйте мышкой\n",[96,1390,1392,1394],{"class":98,"line":1391},6,[96,1393,1336],{"class":102},[96,1395,1396],{"class":106}," ~/.ssh/id_ed25519.pub\n",[1125,1398,1400],{"id":1399},"шаг-4-добавьте-публичный-ключ-в-аккаунт-сервиса","Шаг 4: Добавьте публичный ключ в аккаунт сервиса",[22,1402,1403],{},"Процесс почти идентичен для GitHub, GitLab и других сервисов.",[22,1405,1406],{},[39,1407,1408],{},"Для GitHub:",[317,1410,1411,1417,1423,1429,1436,1442],{},[36,1412,1413,1414,190],{},"В правом верхнем углу нажмите на аватар → ",[39,1415,1416],{},"Settings",[36,1418,1419,1420,190],{},"В меню слева выберите ",[39,1421,1422],{},"SSH and GPG keys",[36,1424,1425,1426,190],{},"Нажмите ",[39,1427,1428],{},"New SSH key",[36,1430,1431,1432,1435],{},"В поле ",[39,1433,1434],{},"Title"," дайте ключу осмысленное имя (например, \"Ноутбук - Ubuntu 22.04\").",[36,1437,1431,1438,1441],{},[39,1439,1440],{},"Key"," вставьте содержимое из буфера обмена (то, что вы скопировали на предыдущем шаге).",[36,1443,1425,1444,1447],{},[39,1445,1446],{},"Add SSH key",". Может потребоваться ввести пароль от аккаунта для подтверждения.",[22,1449,1450],{},[39,1451,1452],{},"Для GitLab:",[317,1454,1455,1461,1466,1474],{},[36,1456,1457,1458,190],{},"Нажмите на аватар → ",[39,1459,1460],{},"Preferences",[36,1462,1419,1463,190],{},[39,1464,1465],{},"SSH Keys",[36,1467,1431,1468,1470,1471,1473],{},[39,1469,1440],{}," вставьте ключ. Поле ",[39,1472,1434],{}," заполните по желанию.",[36,1475,1425,1476,190],{},[39,1477,1478],{},"Add key",[1125,1480,1482],{"id":1481},"шаг-5-протестируйте-подключение","Шаг 5: Протестируйте подключение",[22,1484,1485],{},"Перед тем как клонировать или работать с репозиториями, проверьте, что аутентификация проходит успешно.",[22,1487,1488],{},[39,1489,1408],{},[87,1491,1493],{"className":89,"code":1492,"language":91,"meta":92,"style":92},"ssh -T git@github.com\n",[62,1494,1495],{"__ignoreMap":92},[96,1496,1497,1499,1502],{"class":98,"line":99},[96,1498,1088],{"class":102},[96,1500,1501],{"class":164}," -T",[96,1503,1504],{"class":106}," git@github.com\n",[22,1506,1507],{},[39,1508,1509],{},"Для GitLab (gitlab.com):",[87,1511,1513],{"className":89,"code":1512,"language":91,"meta":92,"style":92},"ssh -T git@gitlab.com\n",[62,1514,1515],{"__ignoreMap":92},[96,1516,1517,1519,1521],{"class":98,"line":99},[96,1518,1088],{"class":102},[96,1520,1501],{"class":164},[96,1522,1523],{"class":106}," git@gitlab.com\n",[22,1525,1526],{},[39,1527,1528],{},"Для GitLab (самохост):",[87,1530,1532],{"className":89,"code":1531,"language":91,"meta":92,"style":92},"ssh -T git@\u003Cваш-домен-гитлаба>\n",[62,1533,1534],{"__ignoreMap":92},[96,1535,1536,1538,1540,1543,1546,1549,1552],{"class":98,"line":99},[96,1537,1088],{"class":102},[96,1539,1501],{"class":164},[96,1541,1542],{"class":106}," git@",[96,1544,1545],{"class":260},"\u003C",[96,1547,1548],{"class":106},"ваш-домен-гитлаб",[96,1550,1551],{"class":267},"а",[96,1553,271],{"class":260},[33,1555,1556,1562],{},[36,1557,1558,1559,190],{},"При первом подключении вы увидите предупреждение о fingerprint хоста. Согласитесь, набрав ",[62,1560,1561],{},"yes",[36,1563,1564,1567,1568,1575,1576],{},[39,1565,1566],{},"Успешный результат"," выглядит примерно так:\n",[87,1569,1573],{"className":1570,"code":1572,"language":850},[1571],"language-text","Hi \u003Cusername>! You've successfully authenticated, but GitHub does not provide shell access.\n",[62,1574,1572],{"__ignoreMap":92},"\nИли для GitLab:\n",[87,1577,1580],{"className":1578,"code":1579,"language":850},[1571],"Welcome to GitLab, @username!\n",[62,1581,1579],{"__ignoreMap":92},[22,1583,1584,1585,1588,1589,1591,1592,1595,1596,1599,1600,1603],{},"Если вы видите сообщение ",[62,1586,1587],{},"Permission denied (publickey)",", вернитесь к шагу 2 и проверьте, что ключ добавлен в ",[62,1590,1028],{}," (",[62,1593,1594],{},"ssh-add -l","), и что вы скопировали ",[39,1597,1598],{},"публичный"," ключ (",[62,1601,1602],{},".pub","), а не приватный.",[17,1605,617],{"id":616},[22,1607,1608,1609,1612],{},"Теперь попробуйте ",[39,1610,1611],{},"клонировать"," любой публичный репозиторий по его SSH-URL (а не HTTPS!). Например:",[87,1614,1616],{"className":89,"code":1615,"language":91,"meta":92,"style":92},"git clone git@github.com:FixPedia/example-repo.git\n",[62,1617,1618],{"__ignoreMap":92},[96,1619,1620,1622,1624],{"class":98,"line":99},[96,1621,180],{"class":102},[96,1623,257],{"class":106},[96,1625,1626],{"class":106}," git@github.com:FixPedia/example-repo.git\n",[22,1628,1629,1630,1632],{},"Процесс должен пройти без запросов пароля или токена. Если клонирование прошло успешно, и вы можете делать ",[62,1631,638],{}," в свои репозитории — настройка завершена!",[17,1634,654],{"id":653},[1125,1636,1638,1639,1641],{"id":1637},"_1-ошибка-permission-denied-publickey-при-тесте-или-клонировании","1. Ошибка ",[62,1640,1587],{}," при тесте или клонировании",[33,1643,1644,1652],{},[36,1645,1646,1648,1649,1651],{},[39,1647,671],{}," Сервер не видит ваш ключ или ",[62,1650,1028],{}," не предлагает его.",[36,1653,1654,1656],{},[39,1655,677],{},[317,1657,1658,1667,1675],{},[36,1659,1660,1661,1663,1664,190],{},"Проверьте, что ключ добавлен в агент: ",[62,1662,1594],{},". Если список пуст или ключа нет — добавьте заново: ",[62,1665,1666],{},"ssh-add ~/.ssh/id_ed25519",[36,1668,1669,1670,1591,1672,1674],{},"Убедитесь, что вы загрузили ",[39,1671,1241],{},[62,1673,1238],{},") в настройки аккаунта на сервере (GitHub/GitLab).",[36,1676,1677,1678,1681,1682,449,1685,190],{},"Проверьте, что в ",[62,1679,1680],{},"~/.ssh/config"," (если он есть) нет ошибочных настроек для хоста ",[62,1683,1684],{},"github.com",[62,1686,1687],{},"gitlab.com",[1125,1689,1691,1692],{"id":1690},"_2-неправильные-права-на-файлы-в-ssh","2. Неправильные права на файлы в ",[62,1693,1217],{},[33,1695,1696,1701],{},[36,1697,1698,1700],{},[39,1699,671],{}," SSH очень строго относится к правам доступа. Приватный ключ не должен быть доступен на запись для других пользователей.",[36,1702,1703,1705,1706],{},[39,1704,677],{}," Выполните команды:\n",[87,1707,1709],{"className":89,"code":1708,"language":91,"meta":92,"style":92},"chmod 700 ~/.ssh\nchmod 600 ~/.ssh/id_ed25519\nchmod 644 ~/.ssh/id_ed25519.pub\n",[62,1710,1711,1722,1731],{"__ignoreMap":92},[96,1712,1713,1716,1719],{"class":98,"line":99},[96,1714,1715],{"class":102},"chmod",[96,1717,1718],{"class":164}," 700",[96,1720,1721],{"class":106}," ~/.ssh\n",[96,1723,1724,1726,1729],{"class":98,"line":113},[96,1725,1715],{"class":102},[96,1727,1728],{"class":164}," 600",[96,1730,1304],{"class":106},[96,1732,1733,1735,1738],{"class":98,"line":1370},[96,1734,1715],{"class":102},[96,1736,1737],{"class":164}," 644",[96,1739,1396],{"class":106},[1125,1741,1743,1744,1746],{"id":1742},"_3-проблемы-с-ssh-agent-после-перезагрузки","3. Проблемы с ",[62,1745,1028],{}," после перезагрузки",[33,1748,1749,1754],{},[36,1750,1751,1753],{},[39,1752,671],{}," Агент завершает работу при выходе из системы.",[36,1755,1756,1758,1759,1761,1762,449,1765,1768,1769,1866,1867,1870],{},[39,1757,677],{}," Настройте автоматический запуск ",[62,1760,1028],{}," и добавление ключа при старте сессии. Часто это делается через файл ",[62,1763,1764],{},"~/.bashrc",[62,1766,1767],{},"~/.zshrc",":\n",[87,1770,1772],{"className":89,"code":1771,"language":91,"meta":92,"style":92},"# Автозапуск агента, если он не запущен\nif ! pgrep -u \"$USER\" ssh-agent > /dev/null; then\n    eval \"$(ssh-agent -s)\"\nfi\n# Добавление ключа, если он еще не добавлен\nssh-add -l > /dev/null || ssh-add ~/.ssh/id_ed25519 2>/dev/null\n",[62,1773,1774,1779,1817,1830,1835,1840],{"__ignoreMap":92},[96,1775,1776],{"class":98,"line":99},[96,1777,1778],{"class":1347},"# Автозапуск агента, если он не запущен\n",[96,1780,1781,1784,1787,1790,1793,1796,1799,1802,1805,1808,1811,1814],{"class":98,"line":113},[96,1782,1783],{"class":260},"if",[96,1785,1786],{"class":260}," !",[96,1788,1789],{"class":102}," pgrep",[96,1791,1792],{"class":164}," -u",[96,1794,1795],{"class":106}," \"",[96,1797,1798],{"class":267},"$USER",[96,1800,1801],{"class":106},"\"",[96,1803,1804],{"class":106}," ssh-agent",[96,1806,1807],{"class":260}," >",[96,1809,1810],{"class":106}," /dev/null",[96,1812,1813],{"class":267},"; ",[96,1815,1816],{"class":260},"then\n",[96,1818,1819,1822,1824,1826,1828],{"class":98,"line":1370},[96,1820,1821],{"class":164},"    eval",[96,1823,1272],{"class":106},[96,1825,1028],{"class":102},[96,1827,1277],{"class":164},[96,1829,1280],{"class":106},[96,1831,1832],{"class":98,"line":1379},[96,1833,1834],{"class":260},"fi\n",[96,1836,1837],{"class":98,"line":1385},[96,1838,1839],{"class":1347},"# Добавление ключа, если он еще не добавлен\n",[96,1841,1842,1844,1847,1849,1851,1854,1857,1860,1863],{"class":98,"line":1391},[96,1843,1301],{"class":102},[96,1845,1846],{"class":164}," -l",[96,1848,1807],{"class":260},[96,1850,1810],{"class":106},[96,1852,1853],{"class":260}," ||",[96,1855,1856],{"class":102}," ssh-add",[96,1858,1859],{"class":106}," ~/.ssh/id_ed25519",[96,1861,1862],{"class":260}," 2>",[96,1864,1865],{"class":106},"/dev/null\n","\nПосле добавления выполните ",[62,1868,1869],{},"source ~/.bashrc"," (или перезайдите в систему).",[1125,1872,1874],{"id":1873},"_4-сервер-использует-нестандартный-порт-ssh-не-22","4. Сервер использует нестандартный порт SSH (не 22)",[33,1876,1877,1882],{},[36,1878,1879,1881],{},[39,1880,671],{}," Некоторые корпоративные или самохостенные Git-серверы используют порт, отличный от 22 (например, 2222).",[36,1883,1884,1886,1887,1768,1889,1895,1896,190],{},[39,1885,677],{}," Настройте SSH для конкретного хоста через конфигурационный файл ",[62,1888,1680],{},[87,1890,1893],{"className":1891,"code":1892,"language":850},[1571],"Host gitlab-company\n    HostName gitlab.yourcompany.com\n    Port 2222\n    User git\n    IdentityFile ~/.ssh/id_ed25519_company\n",[62,1894,1892],{"__ignoreMap":92},"\nЗатем используйте в URL короткое имя хоста: ",[62,1897,1898],{},"git@gitlab-company:group/project.git",[758,1900,1901],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":92,"searchDepth":113,"depth":113,"links":1903},[1904,1905,1906,1913,1914],{"id":19,"depth":113,"text":20},{"id":27,"depth":113,"text":28},{"id":1122,"depth":113,"text":1123,"children":1907},[1908,1909,1910,1911,1912],{"id":1127,"depth":1370,"text":1128},{"id":1245,"depth":1370,"text":1246},{"id":1315,"depth":1370,"text":1316},{"id":1399,"depth":1370,"text":1400},{"id":1481,"depth":1370,"text":1482},{"id":616,"depth":113,"text":617},{"id":653,"depth":113,"text":654,"children":1915},[1916,1918,1920,1922],{"id":1637,"depth":1370,"text":1917},"1. Ошибка Permission denied (publickey) при тесте или клонировании",{"id":1690,"depth":1370,"text":1919},"2. Неправильные права на файлы в ~/.ssh/",{"id":1742,"depth":1370,"text":1921},"3. Проблемы с ssh-agent после перезагрузки",{"id":1873,"depth":1370,"text":1874},"2026-02-17 11:19:36","Пошаговая инструкция по созданию и добавлению SSH-ключа для безопасного подключения к GitHub, GitLab и другим репозиториям. Защитите свои коммиты и избавьтесь от ввода пароля.","10-15 мин",[1927,1930,1933,1936],{"question":1928,"answer":1929},"Зачем вообще нужен SSH-ключ, если можно использовать HTTPS и пароль?","SSH-ключи обеспечивают более безопасное и удобное подключение. Вместо пароля используется криптографическая пара ключей. После настройки вам не нужно будет вводить пароль при каждом `git push` или `git pull`.",{"question":1931,"answer":1932},"Что такое ssh-agent и зачем он мне?","ssh-agent — это программа, которая хранит ваш приватный SSH-ключ в памяти и автоматически подписывает запросы. Без него вас могут попросить ввести пароль (pasphrase) от ключа при каждой операции с Git.",{"question":1934,"answer":1935},"Можно ли использовать один ключ для всех сервисов (GitHub, GitLab, собственный сервер)?","Можно, но с точки зрения безопасности это не рекомендуется. Лучше создавать отдельные ключи для разных сервисов или проектов, чтобы при компрометации одного ключа не страдали все ваши репозитории.",{"question":1937,"answer":1938},"Я работаю на Windows. Этот гайд подойдет?","Нет, эта инструкция предназначена для Linux-систем. Для Windows используйте WSL2 (тогда команды будут аналогичны) или нативную настройку через Git Bash. См. отдельный гайд по настройке SSH в Windows.",[1940,1943,1946,1949,1952,1955],{"name":1941,"text":1942},"Установите OpenSSH-клиент (если не установлен)","Убедитесь, что пакет `openssh-client` установлен. В большинстве современных дистрибутивов он есть по умолчанию.",{"name":1944,"text":1945},"Сгенерируйте новую SSH-ключевую пару","Используйте команду `ssh-keygen`, чтобы создать пару ключей (приватный и публичный). Рекомендуемый тип: ed25519.",{"name":1947,"text":1948},"Запустите и добавьте ключ в ssh-agent","Активируйте агент и добавьте в него ваш приватный ключ, чтобы избежать запроса пароля при каждой операции.",{"name":1950,"text":1951},"Скопируйте публичный ключ в буфер обмена","Получите содержимое файла с публичным ключом (`~/.ssh/id_ed25519.pub`) и скопируйте его.",{"name":1953,"text":1954},"Добавьте публичный ключ в аккаунт сервиса (GitHub/GitLab)","Перейдите в настройки безопасности вашего аккаунта на выбранном хостинге и вставьте скопированный ключ.",{"name":1956,"text":1957},"Протестируйте подключение","Выполните команду `ssh -T git@github.com` (или аналогичную для GitLab), чтобы убедиться, что аутентификация прошла успешно.","PT15M",[1960,1961,1962,1963,1964,1965,1966,1967],"настройка ssh ключа git linux","ssh-agent git ubuntu","как добавить ssh ключ на github","генерация ssh ключа деб","git permission denied publickey","ssh ключ для gitlab","без пароля git clone","настройка git по ssh",{},[1970,1971,1972],"/guides/linux/install-git-debian-ubuntu","/guides/linux/git-config-basics","/errors/linux/git-permission-denied-publickey","Гайды Git",{"title":998,"description":1924},"guides/linux/setting-up-ssh-keys-git","Это руководство поможет вам сгенерировать SSH-ключевую пару, настроить ssh-agent и привязать ключ к вашему аккаунту на GitHub/GitLab. После выполнения вы сможете работать с Git-репозиториями без постоянного ввода пароля.",[180,1088,826,1978,1979,1980,1981],"безопасность","автоматизация","github","gitlab","WGDNlIYMaMc2AvPWgtZXstHFjMRxcte7Eonk2S0wtHI"]