Підключення до github за допомогою SSH-ключа, створеного PuTTY в Windows 7


20

В інстальованій інакше Windows 7 Enterprise:

  1. Встановіть PuTTY 0.62
  2. Створіть пара відкритих / приватних ключів з puttygen.exe
  3. Додайте відкритий ключ для вставки в OpenSSH-авторизовані ключі до акаунта github
  4. Додайте приватний ключ до конкурсу
  5. Встановіть msysgit 1.7.8 із наступними параметрами:
    • Використовуйте Git з командного рядка Windows
    • Використовуйте (Черепаха) Плінк вказував, щоб виправити plink.exe
  6. Переконайтеся, що відбиток Github доданий до знань_хостів, підключившись до github.com у PuTTY та прийнявши відбиток пальця
  7. Редагувати, ~/.ssh/configщоб прочитати:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile ~\.ssh\github.ppk
    

ssh -vvvT git@github.comдає: http://pastebin.com/Tu3Fc6nJ . Зауважте, що мені пропонується ввести фразу пропуску, незважаючи на те, що вона успішно завантажується в конкурс.

Я спробував: chmod 700 ~/.ssh; chmod 600 ~/.ssh/*зсередини Git Bash, але ефекту не підтверджено ls -l.

Слід зазначити, що ця точна настройка працювала на попередній установці Windows 7. Наскільки я можу сказати, все ідентично.

Що працює, це генерування ключів у Git Bash. Однак я не можу додати ці клавіші до конкурсу, що є величезним болем. Насправді, здається, що будь-яка спроба використовувати клавіші, створені PuTTY, є невдалою.

Будь-яке розуміння того, що заважає цьому працювати на основі журналів? Заздалегідь спасибі.


з -vT, будь ласка, менший рівень багатослів’я
Ледачий барсук

Відповіді:


20

Ви плутаєте дві абсолютно окремі програми: PuTTY і OpenSSH.

  • plinkта Pageant є частиною PuTTY. sshКоманда є частиною OpenSSH. Незрозуміло, якою програмою користується Git; для цього потрібно перевірити %GIT_SSH%змінну середовища.

  • Програми використовують різні протоколи агентів; OpenSSH не може використовувати PageT; у неї є своя ssh-agent(яка, на жаль, є дещо складною для використання в Windows).

  • PuTTY та plinkзбережіть налаштування сеансу в реєстрі, який можна редагувати в інтерфейсі PuTTY. Вони нічого не використовують у ~/.ssh/; цей каталог використовується тільки OpenSSH.

  • Формати приватних ключів, які використовуються OpenSSH та PuTTY, різні; Ви не можете використовувати .ppkключ з OpenSSH. Якщо ви створили ключ у PuTTYgen, вам доведеться скористатися його командою "Експорт → OpenSSH".

    $ ssh -vvvT git@github.com
    OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
    ...
    debug2: key_type_from_name: unknown key type 'PuTTY-User-Key-File-2:'
    

Мені відомо про різницю, і як зазначено в оригінальній публікації, git був налаштований використовувати plink при встановленні. Я переконався, що це змінило правильну змінну середовища, щоб вказати на plink.exe. Я хотів би використовувати клавіші PuTTY (і це працювало в минулому!) З git, і те, що його не працює, незважаючи на те, що використовуються планкі, дивно ...
Раду

По суті, зараз я можу змусити його працювати з ключами OpenSSH, але не з ключами PuTTY. Я спробував перевстановити PuTTY, а також створив нові ключі. Це, мабуть, не є проблемою. Будь-яка ідея, що це може бути?
Раду

1
@Radu: plinkне підтримує формат ключів OpenSSH. Якщо ваша версія є, то це не plinkви використовуєте; це щось інше.
grawity

1
@Radu: Також оригінальний пост вказує протилежне вашій заяві. Спочатку ви генеруєте ключ з PuTTYgen і завантажуєте його в Pageant, але потім переходите до налаштування OpenSSH і скаржитеся, що " sshзапитує про фразу, незважаючи на завантаження в Pageant". Ви будете бентежити дві програми.
grawity

Я ніколи не говорив, що plink підтримує OpenSSH - Git Bash, однак, так і робить, оскільки за замовчуванням він використовує OpenSSH. Читаючи назад, ви маєте рацію, я плутаю речі, оскільки, як ви сказали, ~/.ssh/configPuTTY не використовує. Однак я хотів би ще раз зазначити, що GIT_SSH вказується на планкість, і все ж якщо я змінити файл ssh config для OpenSSH, зміни відображаються в Git Bash при спробі підключення до github. По суті, я вважаю, що змінна середовища GIT_SSH ігнорується, і я вважаю, що це щось специфічне для моєї ОС. Я спробую свіжий образ завтра.
Раду

20

Я склав покрокове керівництво, щоб отримати настройку Git для Windows за допомогою програми Plink Plink для аутентифікації SSH.

Дотримуйтесь нижче:


Налаштування

  1. Встановіть putty.zip, який доступний на сторінці завантаження PuTTY, або ви можете завантажити його окремо.

    • PuTTY: putty.exe (або FTP )

      Сам клієнт SSH та Telnet.

    • Plink: plink.exe (або FTP )

      Інтерфейс командного рядка до спинки PuTTY закінчується.

    • Pageant: pageant.exe (або FTP )

      Агент автентифікації SSH для PuTTY, PSCP, PSFTP та Plink.

    • PuTTYgen: puttygen.exe (або FTP )

      Утиліта генерації RSA та DSA.

  2. Створіть ключі RSA та PPK

    1. Використовуючи Git Bash, використовуйте ssh-keygenдля створення пари відкритих / приватних ключів RSA. Більш детальну інформацію про те, як це зробити, можна знайти в офіційній статті " Генерування ключів SSH" .
    2. У PuTTYgen імпортуйте існуючий ~/.ssh/id_rsa(приватний) ключ через ConversionsImport key.
    3. Збережіть імпортований ключ за допомогою Save private keyкнопки як ~/.ssh/id_rsa.ppk.
    4. Тепер у вашому ~/.sshкаталозі повинні бути такі ключі :

      • id_rsa: Приватний (OpenSSH) ключ RSA
      • id_rsa.pub: Загальнодоступний (OpenSSH) ключ RSA
      • id_rsa.ppk: Приватний (PuTTY) ключ
  3. Встановіть Git для Windows .

    Переконайтесь, що ви вирішили використовувати Plink.

    Налаштування Git

    Примітка: Якщо ви вже встановили Git, ви можете просто запустити інсталятор ще раз і встановити Plink для вашої програми SSH за замовчуванням.

  4. Встановіть ваші екологічні шляхи.

    1. На панелі керування перейдіть до подання системи.
    2. Виберіть Додаткові параметри системи .
    3. У вікні Властивості системи перейдіть на вкладку Додатково .
    4. Клацніть Environment variables….
    5. Додайте такі системні змінні (якщо їх ще не встановлено):

      • GIT_HOME: C:\Program Files\Git
      • GIT_SSH: C:\Program Files (x86)\PuTTY\plink.exe
    6. Додайте бітний каталог Git до системного шляху.

      • Path: %Path%;%GIT_HOME%\bin
  5. Відкрийте Pageant та завантажте клавішу ppk, розташовану на ~/.ssh/id_rsa.ppk.

    Примітка. Після того, як Pageant запустився, ви можете натиснути на його іконку в системному треї, розташованому на панелі завдань, поруч із часом, праворуч.

  6. Відкрийте Putty і підключіться, щоб перевірити ваше з'єднання через SSH та додайте ключ сервера як відомий хост.

    Шпаклівка

    Приклади імен хостів:

    • GitHub: git@github.com:22 (або через ssh-агент ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (або через ssh-агент ssh -Tv git@bitbucket.org)
  7. Почніть Git Bash.

    Ви повинні мати можливість натискати та витягуватись із віддаленого хоста, не вводячи пароль щоразу.


Ярлик

Ви можете розмістити ярлик у своєму каталозі запуску, щоб автоматично завантажувати ключ щоразу, коли ви входили у свій обліковий запис Windows.

Через пакетного сценарію

Ця ідея надихнула відповідь на це питання:

Супер Користувач: Як зробити ярлик від CMD? .

REM |==================================================================|
REM | Pageant Autoload.bat                                             |
REM |                                                                  |
REM | This script creates a shortcut for auto-loading a PPK (key) in   |
REM | Pageant by writing a temporary VB script and executing it. The   |
REM | following information below is added to the shortcut.            |
REM |                                                                  |
REM | Filename  : Pageant Autoload                                     |
REM | Target    : pageant.exe                                          |
REM | Arguments : id_rsa.ppk                                           |
REM | Start in  : ~/.ssh                                               |
REM |==================================================================|
@echo off

REM |==================================================================|
REM | Global Values - Do not touch these!                              |
REM |==================================================================|
SET VBSCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
SET STARTUP_DIR=Microsoft\Windows\Start Menu\Programs\Startup
SET STARTUP_USER_DIR=%APPDATA%\%STARTUP_DIR%
SET STARTUP_ALL_USERS_DIR=%PROGRAMDATA%\%STARTUP_DIR% REM Alternative

REM |==================================================================|
REM | Shortcut Values - You can change these to whatever you want.     |
REM |==================================================================|
SET FILENAME=Pageant Autoload.lnk
SET TARGET=%PROGRAMFILES(x86)%\PuTTY\pageant.exe
SET ARGUMENTS=id_rsa.ppk
SET START_IN=%%USERPROFILE%%\.ssh
SET DESCRIPTION=Autoload PuTTY key with Pageant on startup (Ctrl+Alt+S)
SET HOTKEY=CTRL+ALT+S

REM |==================================================================|
REM | Write a new VB script, on the fly; execute and delete it.        |
REM |==================================================================|
ECHO Set oWS = WScript.CreateObject("WScript.Shell") >> %VBSCRIPT%
ECHO sLinkFile = "%STARTUP_USER_DIR%\%FILENAME%" >> %VBSCRIPT%
ECHO Set oLink = oWS.CreateShortcut(sLinkFile) >> %VBSCRIPT%
ECHO oLink.TargetPath = "%TARGET%" >> %VBSCRIPT%
ECHO oLink.Arguments = "%ARGUMENTS%" >> %VBSCRIPT%
ECHO oLink.WorkingDirectory = "%START_IN%" >> %VBSCRIPT%
ECHO oLink.Description = "%DESCRIPTION%"  >> %VBSCRIPT%
ECHO oLink.HotKey = "%HOTKEY%" >> %VBSCRIPT%
ECHO oLink.Save >> %VBSCRIPT%
CScript //Nologo %VBSCRIPT%
DEL %VBSCRIPT% /f /q

Через Провідник Windows

  1. Перейдіть до каталогу запуску в Провіднику Windows.

    • Startup/Каталог користувачів (бажано) знаходиться за адресою:

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • Startup/Каталог усіх користувачів знаходиться за адресою:

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. Клацніть правою кнопкою миші всередині папки та виберіть NewShortcut

  3. У діалоговому вікні Створити ярлик введіть наступну інформацію.

    • Місцезнаходження: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • Ім'я: Pageant Autoload
  4. Клацніть правою кнопкою миші новий ярлик і виберіть Propertiesіз контекстного меню.

  5. Змініть такі поля на вкладці " Ярлик" :

    • Ціль: "%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • Почніть з: %USERPROFILE%\.ssh

     
    Примітки:

    1. Якщо ви використовуєте 32-бітну ОС Windows, вам слід використовувати %PROGRAMFILES%змінну середовища замість%PROGRAMFILES(x86)% .

    2. Якщо ви розмістили ярлик у каталозі запуску «Усі користувачі», переконайтесь, що у поточного користувача є id_rsa.ppkключ у ~/.sshкаталозі, або ключ не завантажиться автоматично.


Заключними зауваженнями

Там у вас це є. Наступного разу, коли ви ввійдете у свій профіль Windows, вас буде привітати запрошення Pageant, щоб ввести пароль для вашого ключа. Якщо ви не встановили пароль на свій ключ, то ваш ключ повинен завантажуватися автоматично, без запиту.

Якщо ви не впевнені, чи завантажений ваш ключ, переглядайте поточні ключі в Pageant, вибравши Переглянути ключі з контекстного меню для Pageant у системному треї.


3
Чудові детальні інструкції! +1 від мене!
Pimp Juice IT

Імпорт приватного ключа в puttygen був моїм відсутнім посиланням
Saurabh Kumar

Довелося створити з'єднання в Putty, щоб включити крок у процесі налаштування із зображення.
користувач46193

Фантастичний! У мене виникло подібне питання до gitlab.com, і це вирішило. Git використовував шпаклівку, тоді як ключ, який я завантажив, був OpenSSH. Дякую!
jgalak

4

Простий англійською мовою

debug3: Не файл ключів RSA1 /c/Users/Radu/\.ssh\github.ppk.

debug2: key_type_from_name: невідомий тип ключа 'PuTTY-User-Key-File-2

Puttygen може створювати різні ключі, Github хоче SSH1-RSA (?, Я використовую ключі ssh2 з Pageant на github)

Додає

Дивіться також цю публікацію про налагодження проблем, пов'язаних із конкурсом, у Github

>plink.exe -v -agent git@github.com
Looking up host "github.com"
Connecting to 207.97.227.239 port 22
Server version: SSH-2.0-OpenSSH_5.1p1 Debian-5github2
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "git".
Trying Pageant key #0
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Authenticating with public key "github/lazybadger" from agent
Sending Pageant's response
Remote debug message: Forced command: gerve lazybadger
Remote debug message: Port forwarding disabled.
Remote debug message: X11 forwarding disabled.
Remote debug message: Agent forwarding disabled.
Remote debug message: Pty allocation disabled.
Access granted
Opened channel for session
Server refused to allocate pty
Started a shell/command
Hi lazybadger! You've successfully authenticated, but GitHub does not provide shell access.
Server sent command exit status 1
Disconnected: All channels closed

SSH1 застарілий і має численні отвори в безпеці. Github не використовує.
grawity

Цей еквівалент "ssh -T git@github.com", на жаль, відсутній у документації щодо використання github. Дякую за публікацію
Епу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.