Для чего нужен SSH-ключ и как его создать под Windows

SSH-ключ — это специальный код, который позволяет удалённому компьютеру понять кто вы есть и какими правами на этом компьютере обладаете.

В обычной жизни мы чаще сталкиваемся с логинами и паролями. Например, чтобы войти в свой профиль во ВКонтакте нужно ввести логин и пароль. Если введённый вами логин и пароль совпадают с теми, что хранятся на серверах ВКонтакте, то соцсеть понимает, что это вы и пускает вас на вашу страничку, разрешая редактировать её и постить котиков. SSH-ключ нужен ровно для этого же, но работает он иначе и ограничен использованием внутри протокола SSH. Протокол SSH нужен в первую очередь для того, чтобы создавать безопасный канал связи с удалённым компьютером, позволяя им управлять, но также может использоваться и для других целей, например передачи файлов.

Как работает SSH-ключ

SSH-ключ разделён на две части. Одна часть называется приватной и должна всегда храниться только на вашем компьютере. Вторая часть ключа называется публичной и эту часть нужно копировать на другие компьютеры. При подключении к удалённому компьютеру он сравнивает публичную часть, которую вы ему дали с приватной частью, которая хранится у вас. Если части ключа совпадают, то вы получаете доступ к удалённому компьютеру (на самом деле всё гораздо сложнее, но принцип работы именно такой). На вашем компьютере может быть создано сколько угодно SSH-ключей. То есть вы можете использовать один SSH-ключ для доступа к сотне компьютеров или для каждого удалённого компьютера создавать отдельный ключ.

Защита SSH ключа

Вы никогда и ни при каких обстоятельствах не должны никому передавать приватную часть своего ключа. Чтобы эту приватную часть нельзя было украсть можно её зашифровать, тогда даже если она попадёт в чужие руки её не смогут использовать. Если вы зашифруете приватную часть SSH-ключа, то каждый раз при его использовании вам нужно будет вводить ключ шифрования, называемый passphrase. Есть общее правило безопасности: если ключ используется не скриптом, а человеком, то он должен быть зашифрован.

Как создать SSH-ключ под Windows

Windows не имеет встроенной поддержки SSH протокола. Поэтому, для создания SSH-ключа нужна специальная программа. Подойдёт Git Bash, которая устанавливается вместе с Git под Windows.

Инструкция по созданию SSH-ключа:

  1. запустите Git Bash;
  2. введите команду ssh-keygen;
  3. программа предложит выбрать место, куда сохранить ключ. По умолчанию создаётся каталог .ssh в папке текущего пользователя Windows. Например, у меня это C:\Users\Denis\.ssh. Этот вариант подходит, поэтому нажимайте Enter;
  4. программа запросит passphrase для шифрования ключа. Если просто нажать Enter, то приватная часть ключа не будет зашифрована. Помите, что если SSH-ключ используется не скриптом, то он должен быть зашифрован. Относитесь к passphrase как к паролю, его нужно запомнить;
  5. после нажатия Enter, программа попросит ввести passphrase повторно. Если вы не шифруете ключ, то ничего не вводите. Следующее нажатие Enter завершит создание ключа.

Теперь в каталоге .ssh созданы два файла:

  • id_rsa — приватный ключ (никому не передавать);
  • id_rsa.pub — публичный ключ (нужно копировать на другие компьютеры).

Установка и настройка Git в Windows

Установить Git на Windows проще простого. В качестве приятного бонуса вместе с Git поставляется консоль Git bash. Работать с этой консолью гораздо удобнее, чем со стандартной CMD в Windows. Кроме того, она понимает некоторые полезные линуксовские команды, такие как find, ls и прочие.

При установке Git под Windows вам нужно будет прописать git.exe в PATH вашей системы, чтобы Git можно было запускать из любого места в командной строке. А также указать Git’у, чтобы при получении кода он не менял символы окончания строк в файлах (эти символы отличаются на системах с Linux’ом и Windows). Всё это делается парой кликов мышкой через инсталятор Git.

Вот скриншоты важных страниц установки Git:

  1. экран выбора установки программ в PATH вашей системы. Выбирайте средний вариант — так вы сможете использовать Git из командной строки из любого каталога и не потревожите стандартные программы Windows find и sort;
    выбор изменений PATH при установке GIt
  2. здесь мы указываем как Git будет поступать с символами окончания строк. На Windows и Linux эти символы разные и Git может менять их перед отправкой и получением кода из репозитория. В моём случае лучший выбор — это не вмешиваться в код при получении и следить за тем, чтобы в репозиторий не попадали файлы с символами Windows-style.
    Выбор изменения символов окончания строк при установке Git
  3. последний экран не столь важен, здесь можно указать что будет в основе надстройки Git Bush — стандартная консоль Windows или MinTTY. Если у вас Windows до 10 версии, то лучше выбрать MinTTY.
    указание какой консолью пользоваться Git'у

После установки укажите Git’у ваше имя и электронную почту. Эти данные будут передаваться с каждым коммитом и их нельзя будет изменить.

Откройте Git Bush и запустите две команды:

  • git config --global user.name "Ваше_Имя"
  • git config --global user.email Ваша_Электронная_Почта

На этом первоначальная настройка Git закончена.

Что такое Git и зачем его использовать

Git — это система управления версиями. У Git две основных задачи: первая —  хранить информацию о всех изменениях в вашем коде, начиная с самой первой строчки, а вторая — обеспечение удобства командной работы над кодом.

Что такое репозиторий Git

Репозиторий Git — это место, где хранится ваш код и вся информация о его изменениях. Репозитории могут находиться у вас на компьютере, на компьютерах ваших коллег и на удалённом сервере.

Как выглядит работа с Git

Git запоминает не все изменения, а только те, которые вы скажите. Это можно сравнить с фотографией. В определённый момент вы нажимаете на затвор и текущая версия вашего сайта остаётся навсегда запечетлена в недрах Git. В будущем вы сможете вернуться и посмотреть как всё было. Такое «фотографирование» называется commit и таких commit’ов может быть неограниченное количество.

Обычно работа с Git выглядит так:

  1. сверстали шапку сайта — сделали commit;
  2. сверстали контент страницы — сделали второй commit;
  3. закончили верстать страницу — сделали третий commit и отправили код на сервер, чтобы вашу работу могли увидеть коллеги, либо чтобы опубликовать страницу с помощью Capistrano.

Отправка кода на сервер называется Push. И при Push’е отправляется не весь код, а только та его часть, которая изменилась.

Где взять серверы для репозиториев Git

Можно настроить свой собственный сервер для Git, но гораздо проще использовать Github или Bitbucket. Это сервисы, предоставляющие сервера для репозиториев Git и сопутствующие инструменты, совершенно бесплатно. У Bitbucket есть преимущество — закрытые репозитории на этом сервисе тоже бесплатны. На Github же бесплатно можно создавать только открытые репозитории. Закрытый репозиторий нужен для того, чтобы к вашему коду имели доступ только те, кому вы разрешите, а не все пользователи интернета.