Настройка ssh git mac os
На старте у нас имеется сервер под управлением 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-ссылке
Более подробное описание работы с Гитхабом мы рассмотрим в статье «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
Читайте также: