设置

设置

在原始的 Windows 7 Enterprise 安装上:

  1. 安装PuTTY 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
    

ssh -vvvT [email protected]给出:http://pastebin.com/Tu3Fc6nJ。请注意,尽管密码已成功加载到 pageant 中,但系统仍提示我输入密码。

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

我应该指出,我在之前的 Windows 7 安装中也使用了同样的设置。据我所知,一切都是相同的。

有效的方法是从 Git Bash 内部生成密钥。但是,我无法将这些密钥添加到 pageant 中,这非常麻烦。实际上,似乎任何使用 PuTTY 生成的密钥的尝试都是失败的。

根据日志,您能看出是什么原因导致此功能无法正常工作吗?提前致谢。

答案1

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

请继续关注以下内容:


设置

  1. 安装腻子可在PuTTY 下载页面或者您可以单独下载。

    • 油灰: 腻子安装程序(或通过FTP

      SSH 和 Telnet 客户端本身。

    • 链接: 链接器(或通过FTP

      PuTTY 后端的命令行界面。

    • 盛会: 选美比赛(或通过FTP

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

    • PuTTYgen: 安装程序(或通过FTP

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

  2. 生成 RSA 和 PPK 密钥

    1. 使用 Git Bashssh-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. 安装适用于 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 测试您的连接,并将服务器的密钥添加为已知主机。

    油灰

    主机名示例:

  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 上下文菜单中。

答案2

您混淆了两个完全独立的程序: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 中生成密钥,则必须使用其“导出 → OpenSSH”命令。

    $ ssh -vvvT [email protected]
    OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
    ...
    debug2: key_type_from_name: unknown key type 'PuTTY-User-Key-File-2:'
    

答案3

用简单的英语

debug3:不是 RSA1 密钥文件 /c/Users/Radu/\.ssh\github.ppk。

debug2:key_type_from_name:未知密钥类型'PuTTY-User-Key-File-2

Puttygen 可以构建不同的密钥,Github 需要 SSH1-RSA(?,我使用ssh2 密钥与 github 上的 Pageant 密钥)

添加

另请参阅关于调试选美的帖子Github 的问题

>plink.exe -v -agent [email protected]
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

相关内容