Дружим Git с Putty

  • Tutorial
Disclaimer
Предварительно делал поиск по хабру с надеждой на подобный пост, смог найти только вот этот пост, в котором вся работа производятся через TortoiseGit.

Но это не наш метод. По той причине, что в этом случае все наши IDE не смогут сами сделать Push на сервер. Да и через Git Bash ничего не получится сделать на сервере.
почему мне нужно использовать Git в связке с Putty?
Так уж получилось, что я активно использую Putty с настроенными ключами для доступа к серверам. Ключей у меня не один. Git-репозитариев тоже не один.
Конечно же, можно нагенерить OpenSSH ключей для Git-а и разрулить их через ~/.ssh/config, но это получается двойная работа – поддержка ключей в Putty и отдельная поддержка для Git.



Итак, представим, что у нас девственно чистая система, в которой нет ни Putty, ни msysgit. Приступим к настройке нашего рабочего окружения.

Установка Putty


Качаем, устанавливаем, генерим и настраиваем ключ c Pagent (инструкция, ?).

Добавляем ключ на git-сервер


Копируем публичный OpenSSH ключ из Putty-ключа
Запускаем Putty key Generator
Открываем (кнопка «Load») наш PPK-ключ
Копируем весь текст из блока «Key»

Открываем страницу с SSH ключами и добавляем из буфера наш ключ
В картинках (на примере GitHub)






Создаём и сохраняем в Putty профиль «git@github.com» и проверяем, что удаётся зайти по ключу – должна открыться и сразу закрыться консоль.
В картинках





Устанавливаем и настраиваем msysgit


Скачиваем и устанавливаем в режиме «next, next, next» с небольшим отходом на диалогах:
1) Добавляем команды в контекстное меню проводника Windows
2) Указываем, что будем использовать Putty вместо OpenSSH
В картинках









А у меня уже установлен msysgit - как мне его перенастроить?
Вариант раз: редукцией — удалить и поставить заново.
анекдот в тему:
Физик возмущается:
— Посмотрите, как эти математики решают задачи!
Задача 1:
«Дано: пустой чайник, кран с водой, плита.
Требуется: вскипятить воду.
Решение: берем чайник, открываем кран, набираем воду, ставим на плиту, дожидаемся закипания. Задача решена.»
Задача 2:
«Дано: чайник с водой, кран с водой, плита.
Требуется: вскипятить воду.
Решение: берем чайник, выливаем воду. Задача сводится к предыдущей.»

Вариант два: добавьте в окружение переменную GIT_SSH, в которой укажите путь до plink.exe



И заключительным шагом будет проверка, что Git консоль так же использует ключ Putty.
Запускаем Git Bash и делаем push в удалённый репозитарий.
В картинках




Плюшка: чтобы и в IntelliJ IDEA можно было этим воспользоваться, достаточно с «Built-in» переключиться на «Native»
Поделиться публикацией
Похожие публикации
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 23
  • +3
    Не нашел ответа на вопрос — «зачем?»
    С гитом вместе поставляется ssh.exe, который не требуется настраивать отдельно
    • 0
      спойлер «Почему я не использую отдельные сертификаты?» не отвечает на вопрос?
      • +1
        Пришлось перечитать его три раза, прежде, чем я понял, что отвечает.
        Наверное, стоило бы его назвать «почему мне нужно использовать putty вместе с git»?
      • 0
        мм, у меня ключ аналогично загружен в ssh-agent
        • +1
          Мне кажется, он противоречит вводной «чистая система без putty и git».
          • 0
            и для чего «Итак, представим» писал…
      • +2
        по моему связка conemu + cygwin будет в разы удобнее
        • 0
          кхм. посмотрю и попробую сравнить в применении к своим потребностям.
        • +1
          У меня ssh.exe идущий с mingw не заработал по IPv6, пришлось переключиться на plink. Дописал в файл ~/.profile следующее:
          GIT_SSH=plink
          export GIT_SSH
          
          • 0
            А нам вот пришлось использовать putty вместо нативного ssh только лишь по той причине, что клонирование происходило с гораздо большей скоростью. Нативный ssh.exe клонировал со скоростью 1,5 MiB/s максимум, агент же putty выдавал при этом скорость больше 10 MiB/s. А в линуксе на той же машине и с тем же сервером скорость несколько десятков мибибайт. Но так как все в конторе работают в Windows, пришлось всем ставить putty.
            • +1
              Интересно, может KiTTY будет работать быстрее оригинала?
            • 0
              Почему бы просто не использовать Cygwin. В нем установкой «в режиме «next, next, next»» можно получить и ssh и git. И не будет необходимости специально конвертировать ключи в формат PuTTY.
              • 0
                потому что потребность не в конвертации ключей, а в их использовании «напрямую».
                • 0
                  Если решать задачу работы git через ssh имея багаж наработок в putty, который хотелось бы использовать, то описанное в статье имеет право на существование. Но по моему это костыль на костыль.

                  В связке «git — putty — ssh» компонент «putty» лишний.
                  • 0
                    если смотреть только связку «Git — SSH», то да, Putty лишний.
                    но если вы считаете, что использование в MS Windows Putty для SSH доступа к серверам (без учёта Git) есть «костыль», то это ваше право.
                    • 0
                      Я считаю, что для решения задач «git через ssh» и «ssh-доступ к серверам (без учёта Git)» Cygwin является намного меньшим злом по сравнению с putty.
              • 0
                1. Автор верно указал, что необходимо сделать тестовое подключение из putty к git-серверу, но важен еще момент, что именно в putty можно добавиь ключ сервера как доверенный, иначе plink будет ругаться.
                2. pagent есть смысл добавить в автозапуск, указав в качестве аргументов файлы с ключами
                3. ВАЖНО: версия plink 0.63 зависает при git clone, по крайней мере при выкачивании из gerrit, поэтому следует пользоваться версией 0.62
                • 0
                  1. в соседней статье про PAgent указано — про установку Putty я ссылаюсь на неё. требуется ли отдельно описать этот нюанс тут?
                  3. кхм. пока ни разу не словил зависаний, но и в качестве git-хранилищ цепляться только к GitLab, GitHub и Gitorious — может именно связка с Gerrit выдаёт коллизии…
                  • 0
                    1. На усмотрение автора
                    3. Я специально уточнил, что именно gerrit, насчет gitlab/githab/linux sshd не могу сказать. Но с gerrit однозначно был такой косяк, который привел в ступор сотрудников, которые переустанавливали систему. Не сразу нашли, в чем проблема.
                • –1
                  Я рискую испортить себе карму. Но не могу понять, почему так мало людей упоминают в комментариях, что такой способ генерации ключа не работает на openssh серверах. Сгенерировав ключ таким образом, как описано в этой статье и многих других, не получится подключиться к openssh серверу. Необходимо создавать ключ в openssh сервере, а потом импортировать его с конвертацией в putty. Только тогда openssh сервер принимает авторизацию от putty-клиента по ключу. А от kitty-клиента и так не принимает. Я лично, читая такие статьи потратил уйму времени на то, чтобы выяснить эту банальность. А комментаторы не заостряющие внимание на этом момента, попросту, либо не делали этого по этой инструкции, либо не внимательно читали эту статью. Потому что по буквам этой статьи вы не сможете подключиться к openssh-серверу. Если конечно, вы не умеете читать между строк…
                  • 0
                    Простите, но к какому же серверу в статье подключается автор? И какой сервер лично я настраивал через putty? Либо я не понимаю, что такое openssh — либо все прекрасно работает.

                    Кстати, передавать приватный ключ по сети, по-хорошему, нельзя.
                    • 0
                      простите, а вы точно статью читали? там же есть блок «Копируем публичный OpenSSH ключ из Putty-ключа»

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