Как стать автором
Обновить

Комментарии 38

Это конечно хорошо, но можно уточнить что вы сделали с системой, что в ней не работает ни ssh-keygen ни putty-gen?
Система живет уже года два. Боюсь, что я не смогу перечислить всего. Там были и несколько реализаций SVN, и пробы Mercurial, и (могу врать) что-то для Git (по крайней мере, когда я пользовался Eclipse, то гит я пробовал)…
при том что встроенный ssh-keygen работает, т.е. msysgit запускает его
хабра уже не та
А что конкретно вас не устраивает? У меня возникла проблема, я её немного неоднозначно решил и написал об этом. Я сделал что-то плохое? Намекните хотя бы, я могу чего-то не понимать. PS: Да и звезды появляются, значит я всё-таки что-то хоть немного полезное написал.
это не решение проблемы, это уход от нее. Проблема что не работают стандартные ломовые утилиты, если ssh-keygen еще банально можен не работать из за того что PATH десять раз переписан. То не работа puttygen говорит о серьезных нарушениях в ОС,
Вы предлагаете мне переустановку захламлённой системы? Или тратить часы на чистку?
PuttyGen работает отлично, сам git не подцепляет сторонние ключи.
Почему он не подцепляет ключ, сгенерированный ssh-keygen я не знаю.
это вы его не так готовите, PuttyGen нужно сделать экспорт закрытого(приватного) ключа, и его скопировать и вставить в окошко в вашем клиенте, а на сервер загрузить открытый ключ, который на самой форме PuttyGen виден
Почему он не подцепляет ключ, сгенерированный ssh-keygen я не знаю.

Не самая лучшая фраза, которую может сказать software developer. Лучше бы разобраться с проблемой, а не плодить костыли.
Насколько я знаю, ssh-keygen.exe поставляется вместе с клиентом git. По умолчанию ключ сохраняется в файле C:\users\user\.ssh\id_rsa.pub, почти как в линуксах (/home/user/.ssh/id_rsa.pub)

Можно было вообще не париться и просто использовать https
git clone bitbucket.org/username/projectName.git
-->enter login: username
-->enter password: ****
Я уже всё это знаю. Но мой опыт работы с git весьма мал, и подробности настройки я начинаю узнавать только сейчас. По крайней мере, теперь есть статья с еще одним, более простым, способом создания ключей.
как бонус к https получите сохранение пароля, если агент хранения его не умер у вас
У меня Intellij IDEA, она и для SSH пароль сохранила. В целом всё работает, но, судя по всему, предыдущие эксперименты оставили следы. Быть может, он ключ ищет где-то не там. В любом случае, эта же проблемма может произойти и у других новичков, а явного её решения не было. Плюсом служит и то, что такое создание ключа банально быстрее…
А теперь ситуация, надо использовать 2 разных ключа.
Или использовать ранее созданный.
Зачем два разных? Откуда второй? Вы, мне кажется, что-то не так поняли из моих слов, отсюда столько недопониманий…
Я понял вашу ситуацию, я про то как решать, если понадобиться использовать 2 ключа разных?
разнесите их по разным хостам в ~/.ssh/config и цепляйтесь из IDEA не к github.com, а к этим хостам через ssh вместо https.
я гружу в ssh-agent
ssh-agent отвечает только за «ввод пароля» для ключа, но не за выбор самого ключа при подключении
хм, не сталкивался с такой проблемой, автоматом авторизуюсь одним из 3х ключей, без доп конфигурации в ~/.ssh/config
а как вы делите git-пользователей для ssh-адреса git@github.com?

Допустим есть пользователь git1 с ключем key1 и есть пользователь git2 с ключем key2…
никак не делю
Читайте про темплейты в git
Начинать с git init (неожиданно, да?)
и? шаблоны описывают только на то, как будет выглядеть .git проекта при создании. Как это относится к тому, чтобы для проекта указать какой SSH-ключ использовать?
второй ключ, это когда у вас два аккаунта
рабочий и личный
да хоть два личных и пять рабочих. я комментировал «Зачем два разных?» — какая разница какие они — личные или рабочие? Главное, что вам надо через ключи разделить аккаунты для одного домена и одного «пользователя» git
вы бы скрины ошибок дали бы, а то фигня получилась какая-то: «у меня по какой-то причине стандартные утилиты не пашут, за пару часов не разобрался в причинах и поэтому решил использовать костыль, о чём я вам сейчас и поведаю».

а так:
0) вы давали стандартные имена ключам?
1) если нестандартные, то прописывали ли вы их в ~/.ssh/config?
2) пытались ли вы просто зайти по SSH с этими ключами на GitHub? (команда «ssh git@github.com» из Git Bash)
кстати, ваш пост можно сократить до:

0) запустить Git Bash
1) выполнить в косноли команду «ssh-keygen»
2) выполнить в консоли команду «cat ~/.ssh/id_rsa.pub»

Ибо «Окно генерации SSH Key» по сути своей является просто графическим интерфейсом для консольного ssh-keygen

и ключи надо искать в "~/.ssh", где "~" это виндовый путь %UserProfile%.
1. В С:/Users/Username создать текстовый файл .bashrc (хинт — в винде для создания dot-файлов нужно написать .bashrc. — с точкой в конце, и нажать enter)
2. В сам файл вписать 2 строчки:
eval $(ssh-agent -s)
ssh-add /C/Users/Username/.ssh/id_rsa
3. Профит.

Естественно, сам id_rsa должен быть сгенерирован и публичный ключ добавлен на GitHub / BitBucket / Whatever
Собственно это всё, что нужно.
а память при этом не будет «утекать»? ведь .bashrc будет выполняться по сути при каждом запуске ssh-команд. Или по завершении процесс ssh-agent прибивается тоже?

Я к тому, если я запущу 3 процесса Git Bash, то сколько в итоге я получу в памяти ssh-agent-ов? А после того, как один Git Bash закрою, сколько в памяти останется ssh-agent-ов?
Протестил. 2 окна Git Bash, 2 агента. Из личной практики — по 3 терминала открытых бывает регулярно (sass --watch, browsersync, git), но по 3 гитбаша — нет. Зачем? С другой стороны, процессы по 1Мб — не то, из-за чего стоит переживать.

image
Не все весь день держат открытым терминал. А более двух запускается, когда у тебя более двух git-проектов — проще запустить для каждого свой терминал, чем cd-прыгать между ними

последовательность:
0) запустил терминал
1) закрыл терминал
2) запустил терминал
3) закрыл терминал
создаст два «брошенных» процесса ssh-agent в памяти.

PS: создавать лучше не .bashrc, а .profile под линухами и cmd-файл в автозагрузке под виндами
создаст два «брошенных» процесса ssh-agent в памяти.


Хм… Проверил, действительно. В принципе, у меня эта последовательность открыл-закрыл за рабочий день выполняется от десятка раз (не люблю когда терминал все время открыт), но никаких последствий в виде тормозов не замечал. Справедливости ради, у меня десктоп с 16Гб памяти, Core i7 и SSD, на ноутбуках попроще это может действительно быть проблемой.

Спасибо за наводку, поколупаю сегодня .profile
Небольшая подсказочка: слово «ничего» пишется слитно :)
статья легко заменятся одной картинкой с подписью «git gui умеет генерировать ssh ключи». вы большой молодец.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации