19

На остальной нетронутой Windows 7 Enterprise установите:

  1. Установите PuTTY 0.62
  2. Создайте пару открытый / закрытый ключ с puttygen.exe
  3. Добавить открытый ключ для вставки в OpenSSH авторизованные_ключи в учетную запись github
  4. Добавить закрытый ключ к конкурсу
  5. Установите msysgit 1.7.8 со следующими параметрами:
    • Использовать Git из командной строки Windows
    • Используйте (черепаха)Plink указал на правильный plink.exe
  6. Убедитесь, что отпечаток github добавлен в know_hosts, подключившись к 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, является неудачной.

Любое понимание того, что мешает этому работать на основе журналов? Заранее спасибо.

3 ответа3

19

Вы путаете две совершенно разные программы: PuTTY и OpenSSH.

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

  • Программы используют разные агентские протоколы; OpenSSH не может использовать Конкурс PuTTY; у него есть собственный 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:'
    
18

Я собрал пошаговое руководство по настройке Git для Windows, используя приложение Plink PuTTY для аутентификации 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 (приватный) через ПреобразованияКлюч импорта.
    3. Сохраните импортированный ключ с помощью кнопки Сохранить закрытый ключ как ~/.ssh/id_rsa.ppk .
    4. Теперь у вас должны быть следующие ключи в вашем каталоге ~/.ssh:

      • id_rsa: закрытый (OpenSSH) ключ RSA
      • id_rsa.pub: открытый (OpenSSH) ключ RSA
      • id_rsa.ppk: Закрытый (PuTTY) ключ
  3. Установите Git для Windows.

    Убедитесь, что вы решили использовать Plink.

    Git setup

    Примечание. Если вы уже установили Git, вы можете просто снова запустить установщик и установить Plink в качестве SSH-приложения по умолчанию.

  4. Установите ваши пути окружения.

    1. На панели управления перейдите к системному представлению.
    2. Выберите Расширенные настройки системы .
    3. В окне « Свойства системы» перейдите на вкладку « Дополнительно ».
    4. Нажмите Переменные среды….
    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-agent ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (или через ssh-agent 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. Щелкните правой кнопкой мыши внутри папки и выберите « Создать» → « Ярлык».

  3. В диалоговом окне « Создать ярлык » введите следующую информацию.

    • Расположение: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • Название: Pageant Autoload
  4. Щелкните правой кнопкой мыши новый ярлык и выберите « Свойства» в контекстном меню.

  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» на панели задач.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .