Настройка доступа по ssh в windows

Чтобы удобно пользоваться ssh и git на windows можно использовать pageant, с его помощью будут иметь доступ putty, git bash, winscp и phpstorm.

Для этого нужно проделать следующее

  1. Скачать putty.zip тут и распаковать весь архив куда-нибудь в укромное местечко (например: d:\Dropbox\Программы\#Portable\Putty\).

  2. Добавляем в переменную окружения PATH путь до папки Putty.

  3. Если у вас ещё нет ключа, создаём его с помощью PUTTYGEN.EXE. И закидываем публичный ключ на нужные сервера в файл ~/.ssh/authorized_keys и на github.

  4. Закидываем ссылку на PAGEANT.EXE в автозагрузку.

  5. Запускаем PAGEANT.EXE.

  6. Добавляем в pageant ключ[и].

  7. Проверяем, что putty заходит без ввода пароля на какой-нибудь сервер, где лежит ваш публичный ключ (в ~/.ssh/authorized_keys).

  8. Скачиваем и устанавливаем git bash отсюда.

  9. Добавляем переменную окружения GIT_SSH с указанием пути до PLINK.EXE.

  10. Открываем git bash, заходим в какой-нибудь репозиторий, где у вас работает ssh авторизация через ключ, и проверям, что git pull работает.

  11. WinSCP настраивать не нужно, он подхватит pageant сам.

Что делать, если не работает

  1. У папки ~/.ssh на сервере должны быть права 700, а у файла ~/.ssh/authorized_keys права 600, иначе может не пустить.

  2. Убрать из папки пользователя windows c:\Users\Anton\.ssh\ всё кроме файла known_hosts, чтобы все ключи подгружались из одного места - pageant.

  3. Выполнить в git bash команду plink -ssh -P 22 git@github.com (подставьте нужный логин@хост). Сделать это нужно для того, чтобы pageant запомнил, что это этого хоста должна использоваться авторизация с помощью ключа. Ещё, иногда это нужно, если при выполнении коннекта, например, командой git pull, git bash не принимает (игнорирует, как будто ничего не было введено) вводимый в консоли ответ y при запросе требующем подтверждения типа (yes/no).

  4. Перезагрузить консоль, т. к. переменные окружения подхватываются только при старте консоли. Проверить, что они прописаны можно выполнил команды echo $GIT_SSH.