Задать вопрос
Все статьи / Хостинг / SSH / SSH и удалённые git-репозитории
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

SSH и удалённые git-репозитории

В этом руководстве мы рассмотрим основные шаги по настройке SSH для работы с удаленными GIT-репозиториями. 

Что такое SSH 

SSH (Secure Shell) – это сетевой протокол, который используется для безопасного удаленного доступа к серверам и устройствам. В отличие от незащищённых протоколов (например, Telnet или FTP), SSH обеспечивает шифрование передаваемых данных, что позволяет защитить их от перехвата злоумышленниками. Протокол SSH используется для: 

  • выполнения команд на удаленных устройствах, 
  • управления серверами, 
  • передачи файлов,
  • настройки сетевых подключений.

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

SSH – это стандарт де-факто для систем на основе Linux и Unix, но он может использоваться и в Windows-среде с помощью специальных программ. Один из самых популярных вариантов для этой задачи – PuTTY.

Настройка SSH для доступа к удалённым GIT-репозиториям

Раньше для доступа к репозиториям через HTTPS из терминала можно было использовать пароли. Теперь при работе с командами вроде git clone, git fetch, git pull, и git push нужно использовать персональные токены доступа вместо стандартных паролей. Так можно повысить безопасность пользователей и защитить их данные от угроз, которые связаны с утечкой или взломом паролей.

Однако работа с HTTPS, даже с токенами, часто оказывается менее удобной по сравнению с SSH. Настройка доступа по SSH не только упрощает взаимодействие с удаленными репозиториями, но и позволяет избежать постоянного ввода токенов или паролей. Достаточно один раз настроить SSH-ключ, и дальнейшая работа станет автоматизированной и более безопасной. 

Теперь перейдём к конкретным шагам, которые нужно выполнить для настройки SSH-доступа к удалённым GIT-репозиториям:

  1. Получаем SSH-ключи

Если у вас уже есть пара SSH-ключей, которые вы планируете использовать для доступа к удаленным репозиториям, важно убедиться, что у приватного ключа выставлены правильные права доступа. Этот шаг очень важен для обеспечения безопасности, чтобы никто, кроме вас, не мог использовать этот ключ. 

Проверьте и при необходимости установите права командой:

chmod 600 ~/.ssh/personal_key

Если у вас еще нет SSH-ключей, вам нужно их сгенерировать. Это можно сделать с помощью утилиты ssh-keygen. Выполните следующую команду в терминале:

ssh-keygen -t ed25519

Флаг -t указывает, какой алгоритм будет использоваться для создания ключей. Современные платформы, по типу GitHub, GitLab и Yandex, рекомендуют использовать алгоритм ed25519 благодаря его высокой безопасности и производительности.

Когда утилита предложит сохранить ключ, можно оставить название файла по умолчанию или указать своё. 

Далее вы можете установить пароль на ключ для дополнительной защиты. В таком случае, при каждом использовании SSH-ключа система будет запрашивать пароль. Однако, чтобы не вводить его каждый раз, можно настроить ssh-agent – менеджер для автоматической работы с ключами.

После завершения генерации, вы увидите «картинку» вашего ключа из ASCII-символов. Кроме того, в вашей директории ~/.ssh/ появятся два файла: приватный ключ id_ed25519 и публичный ключ id_ed25519.pub.

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

mv ~/.ssh/id_ed25519 ~/.ssh/personal_key
mv ~/.ssh/id_ed25519.pub ~/.ssh/personal_key.pub

Теперь ваши SSH-ключи готовы для использования, и вы можете перейти к их добавлению в соответствующую систему, будь то GitHub, GitLab или другая платформа.

  1. Настраиваем ssh config

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

Откройте или создайте файл ~/.ssh/config и добавьте в него следующие строки:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/personal_key
    IdentitiesOnly yes

Где:

  • «Host github.com» – это имя сервера, с которым вы будете работать. Оно должно совпадать с URL сервиса, в нашем случае – GitHub. То же самое имя указывается в параметре HostName.
  • «User git» – имя пользователя, которое используется для подключения к серверу. Для GitHub это всегда пользователь git.
  • «IdentityFile ~/.ssh/personal_key» – путь к приватному ключу, который будет применяться для аутентификации. Замените его на путь к вашему ключу, если вы использовали другое имя.
  • «IdentitiesOnly yes» – этот параметр указывает SSH использовать только указанный ключ для аутентификации, что предотвращает ошибки при наличии множества ключей.

Эти настройки позволят вам автоматически использовать правильный ключ при подключении к GitHub.

Аналогичные конфигурации можно сделать для других сервисов, например, для GitLab. Добавьте в файл конфигурации новые секции, например:

Host gitlab.com
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/personal_key_gitlab
    IdentitiesOnly yes

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

  1. Указываем публичный ключ на GitHub

Чтобы GitHub или другой сервис мог авторизовать ваше SSH-подключение, необходимо добавить ваш публичный SSH-ключ в настройки аккаунта. Это позволит сервису распознать вас как доверенного пользователя при работе с репозиториями. 

Важно! Вы можете указать несколько ключей, если используете разные устройства или профили.

На GitHub процедура выглядит следующим образом:

  1. Перейдите в Settings, а затем – SSH and GPG keys
  2. Нажмите New SSH key.
  3. В поле Key вставьте содержимое вашего публичного ключа, например, файла personal_key.pub (или id_ed25519.pub, если вы не переименовывали ключи).
  4. Щелкните Add SSH key.

На этом этапе ваш публичный ключ добавлен в GitHub. В других сервисах процедура будет аналогичной: найдите раздел для SSH-ключей и добавьте туда публичный ключ.

Когда вы впервые будете подключаться к GitHub по SSH, вам нужно будет добавить его в список доверенных хостов. Система выведет сообщение:

The authenticity of host 'github.com (140.82.121.4)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
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' (RSA) to the list of known hosts.

Ответьте yes, чтобы подтвердить добавление GitHub в список доверенных хостов. После этого вы сможете свободно использовать SSH для доступа к вашим репозиториям.

Важно помнить, что при использовании протокола SSH путь к удаленным репозиториям будет отличаться от HTTPS-версии. Чтобы клонировать репозиторий через SSH, на странице репозитория выберите вкладку SSH и скопируйте указанный путь. 

Далее используйте этот путь аналогично HTTPS в команде:

git clone git@github.com:username/repository.git

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

Как сменить адрес удаленного репозитория

Если ваш репозиторий уже настроен на синхронизацию с удаленным сервером по протоколу HTTPS, но вы решили перейти на SSH для более удобной и безопасной работы, вам потребуется сменить адрес удаленного репозитория.

Для этого, находясь в локальном репозитории, выполните следующую команду:

git remote set-url origin git@serviceurl:username/reponame.git

Где:

  • «serviceurl» – это URL сервиса, на котором размещён ваш удалённый репозиторий. Например, это может быть github.com или gitlab.com.
  • «username» – ваш логин или имя пользователя на сервисе.
  • «reponame» – название вашего репозитория.

Она обновит адрес удаленного репозитория с HTTPS на SSH.

Чтобы убедиться, что изменения вступили в силу, выполните команду:

git remote -v

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

origin git@serviceurl:username/reponame.git (fetch)
origin git@serviceurl:username/reponame.git (push)

Готово! Вы успешно сменили адрес удаленного репозитория.


 

Предыдущая статья
SSH
Следующая статья
SSH-доступ