Git Via Ssh

22 July 2023

git-сервер без настройки

Наткнулся на довольно неожиданную, но простую и полезную фичу гита, а точнее его интеграции с ssh. Один из распространённых видов аутентификация на git-сервере, это аутентификация по ssh-ключу, где копирование данных репозитория осуществляется по протоколу ssh. Долгое время я думал, что для использования этого метода нужен специально настроенный сервер, но оказалось нет, подойдёт любой сервер, на который есть доступ по ssh. Работает это примерно так:

$ git clone ssh://<servername>/<path-to-repo>

Где <servername> это ip-адрес сервера или имя записи для него в ~/.ssh/config, а <path-to-repo> - путь до клонируемого репозитория на сервере, home directory expansion тоже поддерживается.

Таким нехитрым образом можно настроить без всяких серверов (ну кроме дефолтного ssh) репозиторий, который можно синхронизировать между девайсами с помощью привычных git push и git pull. Правда, могут возникнуть проблемы с правами, если в такой репозиторий будут коммитить несколько человек, но это решается классическим для Unix способом: завести группу, в которую будут входить все, кому надо коммитить в репозиторий и дать ей права на его чтение и запись. В остальном полезный хак, периодически бывает удобно разрабатываться на нескольких девайсах без дополнительного похода в гитхаб.