iridiumtechru.github.io:$ cd ~

Git авторизация для Visual Studio Code

Среда с интегрированной системой контроля версий.


Зачем?

В последнее время для всех сторонних проектов использую VSCode в купе с git. Мне очень нравится возможность иметь все инструменты под рукой и вести контроль версий не отрываясь от разработки. Единственной проблемой является то что Git всегда переспрашивает логин/пароль при работе с внешним репозиторием. Сделаем среду максимально удобной.

Для этого сгенерируем ключ для удаленного доступа, укажем его в настройках репозитория и укажем git’e где лежит ключ. Ключ состоит из двуха частей: публичной и приватной. Публичная загружается на удаленный сервер, приватная используется для авторизации. Из приватной можно восстановить публичную. Также ключ может содержать пароль (passphrase) для защиты от потери приватного ключа.

Первым делом придется разобраться с генерацией ключа. Для этого придется понять чем отличаются openssl openssh и puttygen.

Загружаем публичный ключ в репозиторий.

GitHub

Settings -> Deploy Keys -> Add deploy key

Вставляем имя и текст публичного ключа (он обычно начинается с ssh-rsa). Даем ключу права на запись (Allow write access). Сохраняем.

Добавляем приватный ключ

Linux

  1. Копируем приватный ключ.
    • Приватный ключ должен лежать в папке ~/.ssh. Именем по-умолчанию должно быть id_rsa.
    • Если ключей несколько используем ~/.ssh/config файл.
  2. Меняем git remote
    • Переходим в папку репозитория.
    • Посмотреть текущий внешний репозиторий: git remote -v
    • Сменить адрес репозитория на ssh: git remote set-url origin git@github.com:[вставить url]
  3. Проверям пуш
    • git push origin
  4. Запустим VS Code и попробуем push
    • Ctrl+Shift+P -> Push To
    • Push Test

Будет запрошен пароль от сертификата. Если не хочется его вводить постоянно, можно создать сертификат без пароля.

Windows

Странный способ

  1. Запускаем Git Bash и повторяем пункты 1-3 из Linux инструкции. Папку ~/.ssh придется создать.
  2. Запустим VS Code и попробуем push
    • Ctrl+Shift+P -> Push To
    • Push Test
    • Получаем ошибку.
  3. Вызываем code в git консоли.
    • Снова пробуем Push To и всё работает.

Я долго сравнивал переменные через printenv, но мне это наскучило.

Впринципе можно всегда запускать так, но мне это не нравится.

Попробуем зайти с другой стороны. Используем Credential Manager встроенный в Windows.

Сменим git remote обратно на https либо не меняем его изначально.

Предпочтительный способ

  1. Прописываем в конфиг использование встроенного хранилища.
    • Переходим в папку репозитория.
    • Выполняем git config --global credential.helper wincred.
  2. Перезапускаем VS Code и пробуем Push To из VS Code.
    • Вводим данные последний раз.

VS Code сохранит их во встроенном в Windows хранилище.

Выводы

  1. Для меня удобнее использовать ssh сертификат на Linux и wincred на Windows.
  2. Существует еще putty agent, но с ним еще больше возни.
  3. На OSX есть osxkeychain. На Linux тоже есть Credential Manager.
  4. Разработка стала еще приятнее после того как я понял что могу коммитить нажав Ctrl+Enter в окне ввода сообщения к коммиту.

Ссылки

  1. SSH config
  2. Credential Manager
  3. Git Credential
  4. Pageant