web-dev-qa-db-ja.com

Windows 7でPuTTYで生成されたSSHキーを使用してgithubに接続する

他の点では手付かずの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 を提供します。ページェントに正常に読み込まれたにもかかわらず、パスフレーズの入力を求められていることに注意してください。

私はもう試した: chmod 700 ~/.ssh; chmod 600 ~/.ssh/* Git Bash内からですが、ls -l

以前のWindows 7インストールでこの正確なセットアップが機能していたことに注意してください。私が知る限り、すべてが同じです。

機能するのは、Git Bash内からキーを生成することです。ただし、ページェントにこれらのキーを追加することはできません。これは大きな痛みです。実際、PuTTYによって生成されたキーを使用しようとする試みはすべて成功していないようです。

ログに基づいてこれが機能しない原因についての洞察はありますか?前もって感謝します。

21
Radu

SSH認証用のPuTTYのPlinkアプリケーションを使用してWindowsのGitセットアップを取得するためのステップバイステップガイドをまとめました。

以下に従ってください:


セットアップ

  1. インストール PuTTY.ZipPuTTYダウンロードページ から入手できます。または個別にダウンロードすることもできます。

  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. インストール Git for Windows

    Plinkの使用を選択していることを確認してください。

    Git setup

    注:Gitを既にインストールしている場合は、インストーラーを再度実行して、PlinkをデフォルトのSSHアプリケーションに設定できます。

  4. 環境パスを設定します。

    1. コントロールパネルで、システムビューに移動します。
    2. システムの詳細設定を選択します。
    3. System Propertiesウィンドウで、Advancedタブをクリックします。
    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を開き、_~/.ssh/id_rsa.ppk_にあるppkキーをロードします。

    注:Pageantが起動したら、タスクバーの時間の隣にあるシステムトレイの右側のアイコンをクリックします。

  6. PuTTYを開いて接続し、SSH経由で接続をテストして、サーバーのキーを既知のホストとして追加します。

    PuTTY

    ホスト名の例:

  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. フォルダ内を右クリックして選択します New → Shortcut

  3. Create Shortcutダイアログで、次の情報を入力します。

    • 場所:"C:\Program Files (x86)\PuTTY\pageant.exe"
    • 名前:_Pageant Autoload_
  4. 新しいショートカットを右クリックして選択します Properties コンテキストメニューから。

  5. Shortcutタブの下の以下のフィールドを変更します。

    • ターゲット:"%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • 開始:_%USERPROFILE%\.ssh_


    ノート:

    1. 32ビットのWindows OSを使用している場合は、%PROGRAMFILES(x86)%ではなく_%PROGRAMFILES%_環境変数を使用する必要があります。

    2. All Usersスタートアップディレクトリにショートカットを配置した場合は、現在のユーザーが_id_rsa.ppk_ディレクトリに_~/.ssh_キーを持っていることを確認してください。そうしないと、キーは自動ロードされません。


閉会挨拶

そこにあります。次にWindowsプロファイルにログインすると、ページェントプロンプトが表示され、キーのパスワードを入力するよう求められます。キーにパスワードを設定しなかった場合、キーはプロンプトなしで自動的にロードされます。

キーが読み込まれているかどうかわからない場合は、システムトレイのPageantのコンテキストメニューからView Keysを選択して、Pageantの現在のキーを表示します。

20
Mr. Polywhirl

PuTTYとOpenSSHの2つの完全に異なるプログラムを混乱させています。

  • plinkとPageantはPuTTYの一部です。 sshコマンドはOpenSSHの一部です。 Gitが使用しているプログラムは不明です。そのためには、%GIT_SSH%環境変数を確認する必要があります。

  • プログラムは異なるエージェントプロトコルを使用します。 OpenSSHはPuTTYのPageantを使用できません。独自のssh-agentがあります(残念ながら、Windowsでの使用はやや複雑です)。

  • PuTTYおよびplinkは、PuTTYのインターフェースで編集可能なセッション設定をレジストリに保存します。 ~/.ssh/では何も使用していません。このディレクトリはOpenSSHでのみ使用されます。

  • OpenSSHとPuTTYで使用される秘密鍵の形式は異なります。 OpenSSHでは.ppkキーを使用できません。 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:'
    
21
user1686

分かりやすい英語で

debug3:RSA1キーファイル/c/Users/Radu/\.ssh\github.ppkではありません。

debug2:key_type_from_name:不明なキータイプ 'PuTTY-User-Key-File-2

Puttygenはさまざまなキーを構築できるため、GithubはSSH1-RSAを必要としています(?、Iusessh2キーを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
4
Lazy Badger