Git на Linux — как пользоваться.

У нас уже есть свой репозиторий на GitHub, давайте подключим к нему наш хост. В первую очередь нужно установить Git на нашем сервере. У нас ОС CentOS Stream 9, поэтому используем пакетный менеджер dnf:
dnf install git -y

Создадим на хосте ключевую пару. Кодовую фразу оставим пустой:

[root@waky ~]# ssh-keygen -t ed25519 -f /root/.ssh/git
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/git
Your public key has been saved in /root/.ssh/git.pub

Выведем наш публичный ключ, чтобы его было проще скопировать:

[root@waky ~]# cat /root/.ssh/git.pub
ssh-ed25519 AAAAC3AzaC1lZFI1NTE5AAAAINAN7p+luxUykKn1DASXsYY1hEv+bZy1dF5TK2MABrCd waky.ru

Идем в настройки нашего репозитория в GitHub. Settings -> Security — Deploy keys и жмем Add deploy key

Добавляем здесь наш публичный ключ. Если мы планируем пушить с нашего хоста изменения в репу, ставим галочку Allow write access

Теперь настроим Git на хосте и использование им SSH ключа. Вносим данные пользователя:

[root@waky ~]# git config --global user.name "YourName"
[root@waky ~]# git config --global user.email your@email.ru

И задаем переменную с путем до ключа:

[root@waky ~]# export GIT_SSH_COMMAND="ssh -i ~/.ssh/git"

Создадим директорию под репозитории и перейдем в нее:

[root@waky ~]# mkdir /usr/local/repositories
[root@waky ~]# cd /usr/local/repositories

Теперь склонируем репозиторий. Используем ссылку вида:
ssh://git@github.com/username/reponame

[root@waky repositories]# git clone ssh://git@github.com/waky-ru/useful_scripts/
Cloning into 'useful_scripts'...
The authenticity of host 'github.com (140.82.121.4)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3evvV6GuJJhbpCisF/zLDB1zPMSvHdkr2UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 7 (delta 1), reused 5 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (7/7), done.
Resolving deltas: 100% (1/1), done.

Репа скачалась на хост. Перейдем в ее директорию и пропишем настройки SSH команды в конфиг файл репозитория, чтобы не нужно было каждый раз задавать переменную вручную:

[root@waky repositories]# cd useful_scripts
[root@waky useful_scripts]# git config core.sshCommand "ssh -i ~/.ssh/git"

Мы установили Git на наш Linux сервер, мы настроили доступ по ключу и теперь все готово для работы. Набор базовых команд такой же, как мы использовали в Git Bash.