Настройка ssh для git windows

SSH Windows – настройка Putty и Git

Время на чтение: 5 минут

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

Установка и настройка Putty

Putty – это очень популярный клиент для Windows для передачи данных по SSH. Кроме того, client Putty можно использовать и для других оболочек: протокола Telnet, SCP для копирования файлов, как клиент SFTP и утилиту keygen для генерации ключей.

Именно многофункциональность Putty и его бесплатность произвели такой фурор, и именно поэтому вам стоит установить данный клиент на компьютер с ОС Windows.

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

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

Основная задача клиентской программы – это получить доступ к серверу. Большинство используют в SSH аутентификацию при помощи публичных ключей. Потому вам понадобится модуль keygen и его настройка, чтобы сформировать свой открытый ключ для получения доступа к серверу. Итак, скачайте keygen с официального сайта Putty. После того, как вы скачаете keygen, распакуйте его, так как он идет в архиве. После этого запустите.

Чтобы добавить новый публичный ключ, вам нужно узнать, какой тип SSH использует сервер. Если у главы сервера стоит адекватный сисадмин, то, скорее всего, вам нужно будет в параметрах keygen выбрать версию SSH 2RSA. Также не забудьте прописать число генерируемых битов, например, 2048 бит. После этого жмите кнопку Generate. Далее появится сообщение о том, что ключ сгенерирован и вам предложат заполнить поля с кодовой фразой. Но упаси вас сисадмин делать это! Если заполните кодовую фразу, то придется каждый раз ее писать, как совершаете какое-то действие на сервере, что весьма неудобно. Ведь это лишит вас всех прелестей использования аутентификации при помощи открытых ключей. Если вы все же не боитесь трудностей, то указывайте ключевую фразу вместе с комментарием к ней, чтобы вы поняли со временем, что вообще написали там.

После проделанного вам нужно будет отыскать публичный ключ. Генератор создаст открытый ключ и секретный. Второй трогать не нужно, а вот публичный понадобится для размещения его на сервере, чтобы вы смогли подключаться по SSH. Найти сгенерированный ключ можно внутри файла id_rsa.pub через поиск в Windows. Далее скопируйте его и отправьте на сервер, чтобы ключ был добавлен в файл с перечнем публичных ключей для авторизации пользователей. Только так ваш client сможет подключиться по SSH.

Чтобы использовать client Putty по прямому его назначению, то есть чтобы подключиться по SSH к другому серверу Windows, вам нужно знать IP и имя хоста. После этого запускаете client Putty и в разделе “Сессия” заполняете необходимую информацию для подключения к серверу. А именно: вписываете в Host name имя сервера либо в поле IP address – IP-адрес хоста. Порт оставляйте как и есть – равным 22-м, а в названии сессии пропишите что угодно. После того, как введенные данные сохранятся, откроется командная строка с фразой login as. Вам нужно будет вписать имя пользователя, под которым вы входите на сервер и ваш пароль. Учтите, что “Скопировать/Вставить” не получится – в командной строке такая функция запрещена во избежание кражи паролей.

Читайте также:  Обновление пакетов обновление репозиториев linux

Также вы сможете создать туннель при помощи Putty. Туннель в этом клиенте не так сложно настроить. Для начала вам нужно узнать параметры, которым будет соответствовать туннель, а именно куда перенаправлять IP-адрес и делать проброс. Настроить туннель вы сможете в одноименной вкладке “Туннель” или “Tunnels”. Вам всего лишь нужно будет указать тип проброса, порт и IP-адреса откуда делать перенаправление и куда будет вести созданный туннель. Сделать это не сложно, если знать точные параметры для проброса.

Настройка Git в Windows

С установкой этого клиента вы и сами разберетесь – в Windows с инсталляциями все слишком просто, чтобы уделять этому отдельное внимание. Самое главное – это изменить параметры файла конфигураций Git в утилите git config. После обновления клиента Git измененные параметры будут сохраняться, так что вам нужно будет сделать это всего лишь один раз. Учтите, что вам нужно будет создать файл .gitconfig и разместить его в C:\Users\$USER, чтобы Git правильно воспринял введенные вами настройки.

Первым делом в Git вам нужно будет прописать свое имя и имейл, так как эта информация будет преследовать вас повсюду во время использования клиента. Для этого воспользуйтесь строкой git config –global user.name и то же самое, только вместо user.name напишите user.mail для изменения имейла. После указанных строк укажите свой параметр. Для имени нужно использовать кавычки “-“, для имейла – нет.

Следующий шаг настройки Git выполнять необязательно, но он достаточно популярен – это выбор редактора для отправки команд. Если не хотите ничего менять, то Git будет использовать стандартный редактор Windows, установленный у вас на компьютере. Также вы можете выбрать утилиту для сравнения, которая будет определять и устранять конфликты слияния. И на этом еще не все. Но самый лучший способ настройки Git – это ввести приведенную команду: git config –list, чтобы появился список всех внесенных настроек. Уже от них вы сможете отталкиваться, чтобы настроить клиент по-своему. И на этом все!

4.3 Git на сервере — Генерация открытого SSH ключа

Генерация открытого SSH ключа

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

/.ssh домашнем каталоге пользователя. Вы можете легко проверить наличие ключа перейдя в этот каталог и посмотрев его содержимое:

Ищите файл с именем id_dsa или id_rsa и соответствующий ему файл с расширением .pub . Файл с расширением .pub — это ваш открытый ключ, а второй файл — ваш приватный ключ. Если указанные файлы у вас отсутствуют (или даже нет каталога .ssh ), вы можете создать их используя программу ssh-keygen , которая входит в состав пакета SSH в системах Linux/Mac, а для Windows поставляется вместе с Git:

Сначала программа попросит указать расположение файла для сохранения ключа ( .ssh/id_rsa ), затем дважды ввести пароль для шифрования. Если вы не хотите вводить пароль каждый раз при использовании ключа, то можете оставить его пустым или использовать программу ssh-agent . Если вы решили использовать пароль для приватного ключа, то настоятельно рекомендуется использовать опцию -o , которая позволяет сохранить ключ в формате, более устойчивом ко взлому методом подбора, чем стандартный формат.

Теперь каждый пользователь должен отправить свой открытый ключ вам или тому, кто администрирует Git-сервер (подразумевается, что ваш SSH-сервер уже настроен на работу с открытыми ключами). Для этого достаточно скопировать содержимое файла с расширением .pub и отправить его по электронной почте. Открытый ключ выглядит примерно так:

Читайте также:  Oracle linux rdp server

Доступ к bitbucket и github по ssh ключам

Если попытка склонировать любой приватный репозиторий с bitbucket или github по ssh вызывает ошибку вида:

То это значит, что вы не прошли авторизацию по ssh-ключам. Тут 2 варианта:

  1. Клонировать через https схему, при этом будет запрошен имя пользователя и пароль от аккаунта. Минус тот, что при любом обращении к центральному серверу (пр. git fetch , git pull ) придётся снова вводить пароль.
  2. Настроить ssh-ключи, чтобы git-аутентификация проходила автоматически без ввода паролей и т.д.

Если ключи у вас уже есть, то читайте сразу как добавить ssh ключ на github или добавить ssh ключ на bitbucket.

Рассмотрим подробнее как 1. создать ssh-ключи на linux (ubuntu) и добавить ssh ключи на 2. github и 3. bitbucket.

Генерация ssh-ключей

Для генерации ssh-ключа выполняем следующие команды:

После этого будет предложено ввести имя файла с ключами, либо если имя файла не указать, ключи будут созданы в файле id_rsa. Задаём имя файла с ключами, например, как «git_rsa«. Таким образом мы будем знать, что этот ssh-ключ используется конкретно для git-авторизации. Хотя, никто не запрещает использовать один и тот же ключ id_rsa. Ключи будут храниться в домашней директории пользователя

На запрос о установке пароля на связку ключей можно нажать enter, т.е. оставить пароль пустым (это безопасно). Теперь в каталоге

/.ssh появились 2 файла ключа:

  • git_rsa — приватный, который нельзя никому сообщать
  • git_rsa.pub — публичный, который мы сообщим gitbucket и github

По умолчанию при подключении к серверу для ssh-авторизации используется ключ с именем id_rsa. Мы это обойдём. Чтобы не указывать имя нужного нам ключа (git_rsa) при каждом подключении к серверу, отредактируйте файл

/.ssh/config (если файла ещё нет, создайте), добавьте содержимое для идентификации bitbucket-хоста и github:

Всё, на нашем комьютере или сервере (смотря где создавали ключи) нужные ключи созданы. Остаётся сообщить (добавить) наш публичный ключ туда, где мы будем проходить авторизацию, т.е. на github и bitbucket.

Добавление ssh-ключа на github

В своём профиле нажимаем Edit Profile -> SSH Keys -> Add SSH key.

В свежем интерфейсе github:

  1. кликаем на иконку профиля в правом верхнем углу, далее
  2. выбираем меню Settings
  3. в меню слева выбираем SSH and GPG keys
  4. Жмем кнопку New SSH key.

В форме добавления ключа указываем title (это название ключа, вводится для удобства, не на что не влияет) и key (это сам ключ, т.е. вставляем сюда всё содержимое файла

/.ssh/git_rsa.pub). Нажимаем Add key.

Добавление ssh-ключа на bitbucket

Авторизуемся, заходим в свой аккаунт. Нажимаем SSH keys -> Add Key. После ввода ключа в попап окошке нажимаем кнопку Add key для сохранения ssh-ключа.

Теперь вы можете клонировать свои приватные репозитории по ssh (git@github) без ввода пароля.

На что стоит обратить внимание если ssh-авторизация по ключу все еще не работает:

  • Как в git влить все изменения из ветки, чтобы получился один коммит? Решено!
  • Как посмотреть diff файлов которые в индексе git? Решено!
  • Что значит git clone —depth Решено!
  • Не открывает git remote 1 ответ
  • Как отменить ошибочный git commit —amend Решено!
  • git. Настройка git 0 комментариев
  • git алиасы 0 комментариев
  • Отправить Pull Request в чужой репозиторий на github 0 комментариев
  • Настройка прав для id_rsa (bad permissions) 0 комментариев
  • Сказать git какой из ssh-ключей использовать 0 комментариев

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

Мне вообще уже этот «Permission denied (publickey).» всю печёнку выел!
Суть такова: есть боевой проект на jino.ru, есть репо на bitbucket-е, есть локальная версия. Сгенерил путтигеном ключи. Публичный положил на сервер в папку .ssh и добавил ключ к аккаунту на битбаккете. У себя на ПК в путти-агенте активировал приватный ключ — все должно заработать, ан нет! В путти пытаюсь запулить или запушить изменения в связке бой-битбакет — постоянно такая шняга вылезает:

Читайте также:  Приложение google chrome для windows

«Warning: Permanently added the RSA host key for IP address ‘2406:da. e9:9f55’ to the list of known hosts.
Permission denied (publickey).»

да, на бою в папке .ssh после первого запуска пула или пуша в путти был такой запрос:

»
The authenticity of host ‘bitbucket.org (2406:da0. 2c0:3470)’ can’t be established.
RSA key fingerprint is SHA256:zzX. YXaGp1A.
RSA key fingerprint is MD5:97:8c:1. aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
»
как я понял, что-то в стиле «подлинность битбакета не установлена, хотите ли продолжить?». Я ответил согласием, после чего создался успешно файл known_hosts (на бою в папке с ключами), куда пишется ip битбаккета (как я понимаю) и дублируется строка из ключа доступа в том виде ,в котором лежит на битбакете. На др ресурсах вычитал, что чтобы Warning не выскакивал, нужно на бю в папке с ключами положить файл config без расширения и с содержимым «UserKnownHostsFile

/.ssh/known_hosts» — сделано. Права доступа на файл ключа на бою — 600, на остальные 2 файла (конфиг и хостс) — 644, на всю папку .ssh — 700.

Что еще нужно, чтобы пул/пуш заработал по ssh. Я уже в депрессии полнейшей!)) Может для доступа к самому репо на битбакете отдельные ключи нужно добавлять? Типа, к аккаунту на битбаккете подключается, а к репе уже нет?

Amati2007, с виду вы все делаете верно!
на битбакет публичный ключ достаточно добавить только в аккаунт. Можно и отдельно в каждый репозиторий добавлять ключ, но не обязательно.

Вот еще вы пишете, что в бою при запушить возникает ошибка «Permission denied (publickey)».
1) А как вы на боевой сервер подключаетесь? Вводите пароль или авторизуетесь по тому же самому ssh ключу? Если вводите пароль, то попробуйте для начала проверить ssh-авторизацию на хостинг по тому же ключу.
2) У вас одна единственная пара ключей создана и называется id_rsa по дефолту? Чтобы убедиться что один и тот же ключ используется для коннекта, тот же что на битбакет прописан.
3) а в

/.ssh/config нет ничего лишнего? Указания на какой-то левый ключ? Для чистоты эксперимента удалить файл)
4) known_hosts удалить для чистоты эксперимента, он должен сам создаваться при первом подключении (хотя возможно еще зависит от ssh-клиента).

Вообще, судя по ошибке, не нравится именно ключ: проверить что на битбакет залит нужный ключ. Может, стоит сгенерить новый ключ и проверить заново (старый удалить).

/.ssh/known_hosts и все. Изначально этого файла не было и без него всегда выдает Warning. если соединяюсь по ssh. С ним. с ним warning выдавать не должно, но выдает все равно, правда не всегда — если в путти сделать 4 раза подряд сделать попытку пуш или пулл, то этого сообщения нет. Оно появляется с 5-ой и далее попытки. И да, я еще приметил, что в тексте сообщения этого warning вторая часть (после ::) значения IP всегда разное. Например:
5-я попытка -> 2406:da00:ff00::6b17:d1f5
6-я попытка -> 2406:da00:ff00::22c2:513
7-я попытка -> 2406:da00:ff00::22c0:3470

и т.д.
То есть складывается такое ощущение, что у битбакета динамический IP, хотя, по-идее, для таких подключений должен быть набор статичных. Они даже их список где-то публиковали.
4) Да, если я удаляю known_hosts, то при попытке пула / пуша в путти вначале идет запрос про ключи The authenticity of host ‘. (полный текст я приводил в основном сообщении), а когда я отвечаю на него Yes, то known_hosts на сервере создается заново.

Ремарка: если пробовать работать с репо не по ssh, а по https, то происходит следующее: при заходе в путти по логин/паролю все успешно, при попытке пулл/пуш просит пароль — я его ввожу тот, что от аккаунта битбакета и, вуаля, меня не пускает. все тот же «Доступ запрещен», хотя локальная связка работает и я могу как принимать файлы с битбакета на локал, так и отправлять изменения обратно.

Оцените статью