在 Windows 中使用 PuTTY 生成的 SSH 密钥连接到 github

Rad*_*adu 27 windows ssh git putty github

在其他原始的 Windows 7 Enterprise 安装上:

  1. 安装腻子 0.62
  2. 使用 puttygen.exe 创建公钥/私钥对
  3. 添加用于粘贴到 OpenSSH authorized_keys 到 github 帐户的公钥
  4. 为选美添加私钥
  5. 使用以下选项安装 msysgit 1.7.8:
    • 从 Windows 命令提示符使用 Git
    • 使用 (Tortoise)Plink 指向正确的 plink.exe
  6. 通过在 PuTTY 中连接到 github.com 并接受指纹,确保将 github 指纹添加到 know_hosts
  7. 编辑~/.ssh/config阅读:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile ~\.ssh\github.ppk
    
    Run Code Online (Sandbox Code Playgroud)

ssh -vvvT git@github.com给出:http : //pastebin.com/Tu3Fc6nJ。请注意,尽管它已成功加载到选美比赛中,但仍会提示我输入密码。

我试过:chmod 700 ~/.ssh; chmod 600 ~/.ssh/*从 Git Bash 内部,但没有效果,经ls -l.

我应该注意到,我在以前的 Windows 7 安装中使用了这个确切的设置。据我所知,一切都是相同的。

有效的是从 Git Bash 中生成密钥。但是,我无法将这些键添加到选美中,这是一个巨大的痛苦。实际上,任何使用 PuTTY 生成的密钥的尝试似乎都失败了。

根据日志了解是什么阻止了它的工作?提前致谢。

Mr.*_*irl 30

我已经整理了一个分步指南,使用 PuTTY 的 Plink 应用程序进行 SSH 身份验证,为 Windows 设置 Git。

跟随以下:


设置

  1. 安装可从PuTTY 下载页面获得的putty.zip,或者您可以单独下载。

    • PuTTY: putty.exe(或通过FTP

      SSH 和 Telnet 客户端本身。

    • Plink: plink.exe (或通过FTP )

      PuTTY 后端的命令行界面。

    • 选美: pageant.exe(或通过FTP

      PuTTY、PSCP、PSFTP 和 Plink 的 SSH 身份验证代理。

    • PuTTYgen: puttygen.exe(或通过FTP

      RSA 和 DSA 密钥生成实用程序。

  2. 生成 RSA 和 PPK 密钥

    1. 使用 Git Bash,用于ssh-keygen生成一对 RSA 公钥/私钥。有关如何执行此操作的更多信息,请参阅官方生成 SSH 密钥文章。
    2. 在 PuTTYgen 中,~/.ssh/id_rsa通过Conversions→导入您现有的(私有)密钥Import 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. 安装适用于 Windows 的 Git

    确保您选择使用 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-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
Run Code Online (Sandbox Code Playgroud)

通过 Windows 资源管理器

  1. 在 Windows 资源管理器中导航到启动目录。

  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 的上下文菜单中选择View Keys查看Pageant 中的当前密钥。

  • 很棒的详细说明!来自我的+1! (3认同)

use*_*686 22

您混淆了两个完全独立的程序:PuTTY 和 OpenSSH。

  • plink和 Pageant 是 PuTTY 的一部分。该ssh命令是 OpenSSH 的一部分。目前尚不清楚 Git 正在使用哪个程序;您需要为此检查%GIT_SSH%环境变量。

  • 这些程序使用不同的代理协议;OpenSSH 不能使用 PuTTY 的 Pageant;它有自己的ssh-agent(不幸的是在 Windows 上使用有点复杂)。

  • PuTTY 并将plink会话设置存储在注册表中,可在 PuTTY 的界面中进行编辑。他们不使用任何东西~/.ssh/;此目录仅供 OpenSSH 使用。

  • OpenSSH 和 PuTTY 使用的私钥格式不同;您不能.ppk在 OpenSSH 中使用密钥。如果您在 PuTTYgen 中生成了密钥,则必须使用其“Export ? 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:'
    
    Run Code Online (Sandbox Code Playgroud)