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


20

本来のWindows 7 Enterpriseインストールの場合:

  1. PuTTY 0.62をインストールします
  2. puttygen.exeを使用して公開/秘密キーペアを作成する
  3. OpenSSH authorized_keysに貼り付けるための公開鍵をgithubアカウントに追加します
  4. 秘密鍵をページェントに追加する
  5. 次のオプションを使用してmsysgit 1.7.8をインストールします。
    • WindowsコマンドプロンプトからGitを使用する
    • plink.exeを修正するためにポイントされた(カメ)Plinkを使用する
  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 git@github.com提供します:http://pastebin.com/Tu3Fc6nJ。パスフレーズがページェントに正常にロードされたにもかかわらず、パスフレーズの入力を求められることに注意してください。

私は試しました:chmod 700 ~/.ssh; chmod 600 ~/.ssh/*Git Bash内からですが、によって検証された効果はありませんでしたls -l

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

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

ログに基づいてこれが機能しないのは何ですか?前もって感謝します。


-vTと、してください、より少ない冗長性レベル
レイジーバジャー

回答:


20

2つの完全に別個のプログラム、PuTTYとOpenSSHを混同しています。

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

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

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

  • OpenSSHとPuTTYで使用される秘密鍵形式は異なります。.ppkOpenSSHでキーを使用することはできません。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を指す適切な環境変数が変更されたことを確認しました。gitでPuTTYキーを使用します(これは過去に機能しました!)。plinkが使用されているにもかかわらず機能しないという事実は奇妙です
Radu

基本的に、今はOpenSSHキーで動作させることができますが、PuTTYキーでは動作しません。PuTTYを再インストールして、新しいキーを生成しようとしました。それは問題ではないようです。それが何であるか考えていますか?
ラドゥー

1
@Radu:plinkOpenSSHキー形式をサポートしていません。使用しているバージョンplinkが使用している場合、使用しているのではありません。それは別のものです。
悲しみ

1
@Radu:また、元の投稿はあなたの主張の反対を示しています。まず、PuTTYgenを持つキーを生成し、ページェントにロード、しかし、その後、あなたはOpenSSHの設定に行くと「と文句を言うsshページェントにロードされているにもかかわらず、パスフレーズのプロンプトを」。あなたはされている二つのプログラムを混乱します。
悲しみ

plinkがOpenSSHをサポートしているとは言いませんでした-Git Bashは、デフォルトでOpenSSHを使用しているため、サポートします。読んで、あなたは正しいです、あなたが言ったように、私は物事を混乱させてきました~/.ssh/config。ただし、GIT_SSHがplinkを指していることを繰り返しますが、OpenSSHのssh構成ファイルを変更すると、GitHubに接続しようとすると、変更がGit Bashに反映されます。基本的に、GIT_SSH環境変数は無視されていると思いますが、これは私のOSに固有の何かだと思います。明日は新鮮なイメージを試してみます。
ラドゥー

20

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

以下に従ってください:


セットアップ

  1. PuTTYダウンロードページで入手できるputty.zipをインストールするか、個別にダウンロードできます。

    • PuTTY: putty.exe(またはFTPによる

      SSHおよびTelnetクライアント自体。

    • Plink: plink.exe(またはFTPによる

      PuTTYバックエンドへのコマンドラインインターフェイス。

    • Pageant: 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. Git for 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-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. フォルダー内を右クリックし、選択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 OSを使用して%PROGRAMFILES%いる場合、の代わりに環境変数を使用する必要があります%PROGRAMFILES(x86)%

    2. ショートカットを[すべてのユーザー]スタートアップディレクトリに配置した場合は、現在のユーザーのディレクトリにid_rsa.ppkキーがあることを確認して~/.sshください。キーがない場合、キーは自動ロードされません。


閉会の辞

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

システムトレイのPageantのコンテキストメニューから[キーの表示]を選択して、キーがロードされているかどうかが不明な場合は、Pageantの現在のキーを表示します。


3
非常に詳細な手順!私から+1!
ピンプジュースIT

puttygenに秘密鍵をインポートすることは私のミッシングリンクでした
Saurabh Kumar

画像からセットアッププロセスのステップを有効にするために、Puttyで接続を作成する必要がありました。
-user46193

素晴らしい!gitlab.comでsimilairの問題が発生しましたが、これで解決しました。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を必要とします(?、githubのPageantでssh2キーを使用します)

追加

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はそれを使用しません。
悲しみ

「ssh -T git@github.com」に相当するこの機能は、githubのハウツードキュメントから残念ながら欠落しています。投稿していただきありがとうございます。
エプ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.