Настройка ssh git mac os

Обновлено: 07.07.2024

На старте у нас имеется сервер под управлением CentOS, который будет выступать хостингом репозиториев; и клиент на Mac OS Yosemite, который будет с ним работать.

Подготовительный этап

Для самого начала нам потребуются ssh ключи. На любой машине генерим приватный и публичный ключ командой

ssh-keygen -t rsa

После этого будет создана пара ключей

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

/.ssh/git, а публичный - на сервере в файле /tmp/git.pub.

Важное замечание, если вы генерите non-openssh public keys, например, при помощи PuTTY gen, то для использования в gitolite публичный ключ придется конвертировать командой

ssh-keygen -i -f /tmp/ssh2/YourName.ppk > /tmp/openssh/YourName.pub

Это типичная проблема при использовании, например, TurtoiseGit на windows, когда для того чтоб он принял ключ он должен быть в формате *.ppk, а на сервере - в фомате openssh.

Настраиваем gitolite на сервере

Итак публичный ключ администратора у нас лежит в /tmp/git.pub, начинаем с установки gitolite.

Для начала надо понять какой gitolite нам доступен при помощи

yum search gitolite

а потом переходим к установке

sudo yum install gitolite3
sudo useradd git
sudo su git
gitolite setup -pk /tmp/git.pub

На этом в общем вся настройка готова. Если подробнее, то штатным способом ставим gitolite, потом мы добавляем пользователя git под которым будет осуществляться работа gitolite, и из под этого пользователя делаем первичную настройку gitolite.

В результате в /home/git у нас появилась папка repostitories в которой два репозиторя

[git@host repositories]$ ll
итого 8
drwx------. 8 git git 4096 фев 11 15:50 gitolite-admin.git
drwx------. 7 git git 4096 фев 11 15:50 testing.git

gitolite-admin предназначен для управления пользователями и правами, а
testing - это репозиторий с которым можно поиграться.

Управление конфигураций gitolite осуществляется через коммиты в gitolite-admin, поэтому об этом я расскажу ниже, после настройки клиента.

Настраиваем git клиента на Mac OS

В принципе git на Mac OS Yosemite уже есть, но чтоб им пользоваться надо ставить XCode, поэтому берем и ставим git с официального сайта.

Далее, в принципе, можно жить и работать с git в консоли, но я для себя выбрал gui клиента SourceTree, он бесплатен, хоть и требует регистрации через месяц, но она тоже бесплатная. В целом им вполне удобно пользоваться даже после виндового TurtoiseGit. Далее рассказ буду вести исходя из того что у меня SourceTree.

Итак наш приватный ключ у нас в

/.ssh/config в котором пишем:

Далее открываем SourceTree и в нем жмем новый репозиторий -> клонировать по URL. Заполняем поле URL источника

Остальные на свое усмотрение. Открываем репозиторий и нажимаем "получить", теперь у нас есть текущая конфигурация нашего gitolite. После ее изменения коммитим и отправляем данные в удаленный репозиторй для изменения конфигурации.

На этом процесс настройки клиента закончен.

Пара слов про конфигурацию gitolite

Вся она расположена в репозитории gitolite-admin, который состоит из двух папок conf и keydir. Внутри keydir хранятся публичные ключи пользователей, где имя файла - это логин пользователя. А в conf всего один файл с конфигурацией, которая максимально проста, вот например

@admins = admin superadmin

repo gitolite-admin
RW+ = @admins
RW = user1
R = @all

repo testing
RW+ = @all

Здесь у нас определена группа admins, с двумя логинами и описаны права на репозитории. Сразу хочу заметить что при помощи @ можно создавать не только группы пользователей, но и группы репозиориев.

Описание возможных прав:

  • R - только чтение
  • RW - чтение добавление коммитов, запрещен rewind (push --force)
  • RW+ - полный доступ
  • RWC - возможность создавать ветку
  • RWD - возможность удалять ветку
  • - запретить запись

Объекты доступа могут быть:

  • master@ - ветки
  • ref/tags - теги (версии)
  • NAME/имя_файла - имена файлов/каталогов

Более подробно по конфигу можно все найти в гугле или на официальном сайте.

Гитхаб — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Он как раз и основан на системе контроля версий Гит. Кроме размещения кода участники могут общаться, комментировать правки друг друга, а также следить за новостями знакомых. Именно в нём работаем мы в Академии и ученики на интенсивах.

Устанавливаем Гит

Если до этого вы не работали с Гитом, то его нужно установить. Рассмотрим, как это сделать в популярных операционных системах.

Установка в Linux

Если вы хотите установить Git под Linux как бинарный пакет, это можно сделать, используя обычный менеджер пакетов вашего дистрибутива. Пользователи Fedora, могут воспользоваться yum: $ yum install git-core Для дистрибутивов, основанных на Debian (например Ubuntu), используйте apt-get: $ sudo apt-get install git

Установка на Mac

Сперва устанавливаем Homebrew если он у вас ещё не стоит. Также вы можете установить его с помощью команды:

После установки Homebrew, введите в терминале команду: brew install git .

Эта команда установит Гит на ваш компьютер.Чтобы прописать новый путь к установке Гит введите команду: export PATH=/usr/local/bin:$PATH

Установка в Windows

Здесь всё просто. Просто скачайте exe-файл инсталлятора со страницы проекта на Гитхабе и запустите его.

После установки у вас будет как консольная версия (включающая SSH-клиент, который пригодится позднее), так и стандартная графическая.

Начинаем работу

Устанавливаем SSH-ключи

Доступ к удалённому репозиторию по SSH — самый распространённый вариант настройки удалённого доступа, быстрый, удобный и безопасный. Настроив авторизацию в SSH по ключам, вы будете избавлены от необходимости вводить пароли для доступа к репозиторию, сохраняя, однако, приемлемый уровень безопасности.

«eval» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

В Сmder для запуска ssh-agent можно использовать команду start-ssh-agent .

Если проблема осталась, то рекомендуем воспользоваться программой Git Bash.

Примечание: если вы используете macOS Sierra 10.12.2 или более позднюю версию, то вам нужно будет модифицировать ваш

/.ssh/config файл, чтобы автоматически загрузить ключи в ssh-agent и хранить пароли.

Также вы можете добавить свой приватный ключ в ssh-agent и сохранить пароль к нему с помощью команды $ ssh-add -K

/.ssh/id_rsa . Если вы создали свой ключ с другим именем или добавили существующий ключ с другим именем, замените в команде id_rsa на имя вашего личного ключа.

После того как создан ключ, его остаётся только добавить на Гитхаб. Для этого скопируем его содержимое командой pbcopy <

/.ssh/id_rsa.pub (для пользователей macOS или Linux) или clip <

Добавляем ключ на Гитхаб

Добавляем ключ на Гитхаб

Результат проверки добавления ключа

Результат проверки добавления ключа

Теперь можно клонировать любой доступный репозиторий используя его SSH-ссылку.

Клонируем репозиторий по SSH-ссылке

Клонируем репозиторий по SSH-ссылке

Более подробное описание работы с Гитхабом мы рассмотрим в статье «Pабота с Гит через консоль»

В этом гайде покажу как создать ключ, загрузить на сервер и перенастроить локальный репозиторий на SSH доступ. В качестве примера используется Windows 10 и GitBash.

Что необходимо

  • Gitbash или установленный git для Linux и macOS.
  • Репозиторий на GitHub.

Создание пары ключей SSH

SSH (Secure SHell) - это протокол, который позволяет безопасно авторизоваться в различные сервисы, подключаться к удаленным терминалам, передавать по шифрованным каналам информацию. Очень распрастранен при работе с репозиториями. Использует пару ключей - публичный и приватный.

Открывайте GitBash или терминал, вводите:

💡 Если у вас будет ошибка: No such file or directory - создайте папку, выполнив команду:

После заходите в папку.

Для генерации ключа используется программа ssh-keygen , она обычно установлена, в Windows встроена в GitBash.

Github рекомендует использовать ключ типа ed25519, так как этот алгоритм на данный момент самый безопасный, с коротким открытым ключом (68 символов, против 544 у RSA) и что важно - быстро работает. За тип ключа отвечает параметр -t .

Длина ключа рекомендуется 4096 бит, при создании это параметр -b .

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

В итоге для запуска генерации ключа, выполните:

Вам будут заданы несколько вопросов:

Куда сохранить файл ( Enter file in which to save. ) - нажмите Enter и по умолчанию ключ будет назван id_ed25519 и сохранится в .ssh папке профиля текущего пользователя. (в Windows папки пользователя в C:/Users, в macOs/Linux папка пользователя в /home)

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

Подтвердить кодовую фразу или ее отсутсвие, тоже нажав Enter.

В результате вам покажут рисунок вашего ключа:

Проверьте, на месте ли ключи, выведите список файлов в папке .ssh :

Вывод должен быть таким:

первый файл это приватный ключ, а второй с .pub это публичный.

Активация ключа

Для того чтобы ключ использовался системой, необходимо добавить ключ в ssh-agent.

результат, номер процесса может отличаться:

Добавьте ранее созданный ключ:

При успехе получите ответ:

Ключи SSH готовы к использованию!

Добавление публичного ключа в профиль на GitHub

ℹ Кратко про ключи. С помощью публичного ключа, каждый может зашифровать информацию, расшифровать может только владелец приватного ключа, поэтому приватный ключ нельзя передавать, отправлять или хранить в открытом виде. Желательно пару ключей дополнительно скопировать на отдельный носитель, на случай потери ключа на компьютере.

В GitHub для работы с репозиториями скопируйте публичный ключ, одним из способов:

это скопирует публичный ключ в буфер обмена.

  • если данная команда не работает, откройте файл id_ed25519.pub в любом текстовом редакторе, и скопируйте все содержимое файла, публичный ключ выглядит так:

Нажимайте не кнопку New SSH Key

В поле Key вставьте скопированный ключ:

В поле Title можете вставить название ключа, пригодится если у вас будет в профиле более одного ключа. Поможет их различать.

Нажимайте кнопку Add SSH Key .

Теперь можно использовать SSH доступ к вашим репозиторияем!

Получение репозитория по SSH

Откройте репозиторий и скопируйте ссылку для SSH доступа:

И как обычно используйте команду git clone:

Зайдите в репозиторий и скопируйте SSH ссылку доступа, перейдите в локальный репозиторий и удалите текущий remote origin:

и добавьте новый, последняя строка в команде это ссылка доступа SSH:

проверьте список удаленных репозиториев:

Данный топик это некоторая компиляция из руководства по установке gitosis на Ubuntu Server и Leopard, плюс акценты от меня на некоторые места в которых могут возникнуть проблемы.

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

Установка git.

Если git у вас уже установлен — можете пропустить эту часть.
Чтобы установить git вы можете воспользоваться инсталлятором или поставить git из портов (MacPorts). Мне кажется более удобным второй путь, потому как порты в будущем можно будет легко обновить до свежей версии.

Git с помощью установщика.

Скачиваем dmg файл c google code, открываем, запускаем pkg файл установщика и все: git уже лежит у вас в /usr/local/.

Git из портов.

Предположу, что вы уже устновили порты. Если нет — устанавливайте, там нет ничего сложного, и продолжим.
Запускаем установку git из исходников:
sudo port install git-core
Если все прошло без ошибок — только что скомпилированный git лежит у вас в /opt/local/bin/. Я не случайно упоминаю пути, они могут вам понадобится если что-то пойдет не так.

Установка gitosis.

Настройка gitosis.

Для обеспечения должного уровня безопасности для gitosis заводится отдельный пользователь и отдельная группа.

Создание группы и пользователя.

1. Найдем свободные UID и GID для нового пользователя
sudo dscl . list /Users uid
sudo dscl . list groups gid
(допустим 401 GID и UID свободны)
2. Создадим группу git
sudo dscl . create groups/git
sudo dscl . create groups/git gid 401
3. Создадим пользователя git
sudo dscl . create users/git
sudo dscl . create users/git uid 401
sudo dscl . create users/git NFSHomeDirectory /Users/git
sudo dscl . create users/git gid 401
sudo dscl . create users/git UserShell /bin/bash
sudo dscl . create users/git Password '*'
4. Создадим домашнюю директорию (ту что указали в строчке 3, пунктом раньше)
sudo mkdir /Users/git
sudo chown git /Users/git
sudo chgrp git /Users/git

Читайте также: