- SSH Windows – настройка Putty и Git
- Установка и настройка Putty
- Настройка Git в Windows
- 4.3 Git на сервере — Генерация открытого SSH ключа
- Генерация открытого SSH ключа
- Доступ к bitbucket и github по ssh ключам
- Генерация ssh-ключей
- Добавление ssh-ключа на github
- Добавление ssh-ключа на bitbucket
- Комментарии 5
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. Вам нужно будет вписать имя пользователя, под которым вы входите на сервер и ваш пароль. Учтите, что “Скопировать/Вставить” не получится – в командной строке такая функция запрещена во избежание кражи паролей.
Также вы сможете создать туннель при помощи 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 и отправить его по электронной почте. Открытый ключ выглядит примерно так:
Доступ к bitbucket и github по ssh ключам
Если попытка склонировать любой приватный репозиторий с bitbucket или github по ssh вызывает ошибку вида:
То это значит, что вы не прошли авторизацию по ssh-ключам. Тут 2 варианта:
- Клонировать через https схему, при этом будет запрошен имя пользователя и пароль от аккаунта. Минус тот, что при любом обращении к центральному серверу (пр. git fetch , git pull ) придётся снова вводить пароль.
- Настроить 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:
- кликаем на иконку профиля в правом верхнем углу, далее
- выбираем меню Settings
- в меню слева выбираем SSH and GPG keys
- Жмем кнопку 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 и добавил ключ к аккаунту на битбаккете. У себя на ПК в путти-агенте активировал приватный ключ — все должно заработать, ан нет! В путти пытаюсь запулить или запушить изменения в связке бой-битбакет — постоянно такая шняга вылезает:
«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, то происходит следующее: при заходе в путти по логин/паролю все успешно, при попытке пулл/пуш просит пароль — я его ввожу тот, что от аккаунта битбакета и, вуаля, меня не пускает. все тот же «Доступ запрещен», хотя локальная связка работает и я могу как принимать файлы с битбакета на локал, так и отправлять изменения обратно.