विंडोज 7 में PuTTY जेनरेट एसएसएच कुंजी का उपयोग करके जीथब से कनेक्ट करना


20

अन्यथा प्राचीन विंडोज 7 एंटरप्राइज स्थापित होने पर:

  1. PuTTY 0.62 स्थापित करें
  2. Puttygen.exe के साथ सार्वजनिक / निजी कुंजी जोड़ी बनाएं
  3. ओपनएसएसएच अधिकृत_कीज को जीथूब खाते में चिपकाने के लिए सार्वजनिक कुंजी जोड़ें
  4. पेजेंट में निजी कुंजी जोड़ें
  5. निम्नलिखित विकल्पों के साथ msysgit 1.7.8 स्थापित करें:
    • Windows कमांड प्रॉम्प्ट से Git का उपयोग करें
    • का प्रयोग करें (कछुआ) पलक ने plink.exe को सही करने के लिए कहा
  6. सुनिश्चित करें कि github फिंगरप्रिंट को PuTTY में github.com से जोड़कर और फिंगरप्रिंट स्वीकार करके 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/*गिट बैश के भीतर से लेकिन इसके द्वारा सत्यापित कोई प्रभाव नहीं था ls -l

मुझे ध्यान देना चाहिए कि मेरे पास यह सटीक सेटअप पिछले विंडोज 7 इंस्टॉल पर काम कर रहा था। जहाँ तक मैं बता सकता हूं, सब कुछ समान है।

क्या काम करता है गिट बैश के भीतर से चाबियाँ पैदा कर रहा है। हालाँकि, मैं उन कुंजियों को पेजेंट में नहीं जोड़ सकता, जो एक बहुत बड़ी पीड़ा है। वास्तव में, ऐसा लगता है कि PuTTY द्वारा उत्पन्न कुंजियों का उपयोग करने का कोई भी प्रयास असुरक्षित है।

लॉग पर आधारित काम करने से इसे रोकने के बारे में कोई जानकारी? अग्रिम में धन्यवाद।


-vT के साथ, कृपया, कम वर्बोसिटी स्तर
आलसी बेजर

जवाबों:


20

आप दो पूरी तरह से अलग कार्यक्रमों को भ्रमित कर रहे हैं: PuTTY और OpenSSH।

  • plinkऔर पेजेंट PuTTY का हिस्सा हैं। sshआदेश OpenSSH का हिस्सा है। यह स्पष्ट नहीं है कि Git द्वारा किस कार्यक्रम का उपयोग किया जा रहा है; आपको उसके लिए %GIT_SSH%पर्यावरण चर की जाँच करने की आवश्यकता है।

  • कार्यक्रम विभिन्न एजेंट प्रोटोकॉल का उपयोग करते हैं; ओपनएसएसएच पुट्टी के पेजेंट का उपयोग नहीं कर सकता है; इसका अपना है ssh-agent(जो दुर्भाग्य से विंडोज पर उपयोग करने के लिए कुछ जटिल है)।

  • PuTTY और plinkसत्र सेटिंग्स को रजिस्ट्री में संग्रहीत करें, PuTTY के इंटरफ़ेस में संपादन योग्य। वे कुछ भी उपयोग नहीं करते हैं ~/.ssh/; यह निर्देशिका केवल OpenSSH द्वारा उपयोग की जाती है।

  • OpenSSH और PuTTY द्वारा उपयोग किए जाने वाले निजी प्रमुख प्रारूप अलग-अलग हैं; आप .ppkOpenSSH के साथ एक कुंजी का उपयोग नहीं कर सकते । यदि आपने PuTTYgen में कुंजी उत्पन्न की है, तो आपको इसके "निर्यात → ओपनएसएसएच" कमांड का उपयोग करना होगा।

    $ 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:'
    

मुझे अंतर के बारे में पता है और जैसा कि मूल पोस्ट में संकेत दिया गया है, स्थापित होने पर पलक का उपयोग करने के लिए गिट सेट किया गया है। मैंने सत्यापित किया है कि यह plink.exe को इंगित करने के लिए उचित पर्यावरण चर को बदल दिया है। मैं gitt के साथ PuTTY कुंजियों का उपयोग करना चाहता हूं (और यह अतीत में काम कर चुका है!) और यह तथ्य कि पलक के इस्तेमाल के बावजूद काम नहीं करना अजीब है ...
Radu

अनिवार्य रूप से, अभी मैं इसे ओपनएसएसएच कुंजी के साथ काम करने के लिए प्राप्त कर सकता हूं, लेकिन पुट्टी कुंजी के साथ नहीं। मैंने PuTTY को फिर से स्थापित करने की कोशिश की है और नई चाबियां भी बनाई हैं। TThat को समस्या नहीं लगती है। क्या कोई विचार है की यह क्या हो सकता है?
रादु

1
@Radu: plinkOpenSSH कुंजी प्रारूप का समर्थन नहीं करता है। यदि आपका संस्करण करता है, तो इसका plinkउपयोग आप नहीं कर रहे हैं; यह कुछ और है।
grawity

1
@Radu: इसके अलावा, मूल पोस्ट आपके दावे के विपरीत को इंगित करता है। पहले आप PuTTYgen के साथ एक कुंजी उत्पन्न करते हैं और इसे Pageant पर लोड करते हैं, लेकिन फिर आप OpenSSH को कॉन्फ़िगर करने के साथ जाते हैं और शिकायत करते हैं कि " sshPageant में लोड होने के बावजूद पास-वाक्यांश के लिए संकेत देता है"। आप दो कार्यक्रमों को भ्रमित कर रहे हैं
११:५२

मैंने कभी नहीं कहा कि पलक ओपनएसएसएच - गिट बैश का समर्थन करता है, हालांकि, डिफ़ॉल्ट रूप से यह ओपनएसएसएच का उपयोग करता है। वापस पढ़ना, आप सही हैं, मैं चीजों को भ्रमित कर रहा हूं क्योंकि आपने कहा था, ~/.ssh/configपुट्टी द्वारा उपयोग नहीं किया जाता है। हालाँकि, मैं यह दोहराना चाहूंगा कि GIT_SSH को पलक करने के लिए कहा गया है, और फिर भी अगर मैं OpenSSH के लिए ssh कॉन्फ़िग फ़ाइल को संशोधित करता हूँ, तो परिवर्तन Git Bash में परिलक्षित होता है जब github से जुड़ने का प्रयास किया जाता है। अनिवार्य रूप से, मेरा मानना ​​है कि GIT_SSH पर्यावरण चर को अनदेखा किया जा रहा है और मुझे लगता है कि यह मेरे OS के लिए कुछ विशिष्ट है। मैं कल एक नई छवि पर कोशिश करूँगा।
रादु

20

मैंने SSH प्रमाणीकरण के लिए PuTTY के प्लिंक एप्लिकेशन का उपयोग करके विंडोज़ के लिए Git सेटअप प्राप्त करने के लिए चरण-दर-चरण मार्गदर्शिका को एक साथ रखा है।

नीचे के साथ पालन करें:


सेट अप

  1. पुट्टी.ज़िप स्थापित करें जो पुट्टी डाउनलोड पेज पर उपलब्ध है या आप व्यक्तिगत रूप से डाउनलोड कर सकते हैं।

    • PuTTY : putty.exe (या एफ़टीपी द्वारा )

      SSH और टेलनेट ग्राहक ही।

    • पलक : plink.exe (या एफ़टीपी द्वारा )

      PuTTY बैक के लिए एक कमांड-लाइन इंटरफ़ेस समाप्त होता है।

    • पेजेंट: pageant.exe (या FTP द्वारा )

      PuTTY, PSCP, PSFTP और पलक के लिए एक SSH प्रमाणीकरण एजेंट।

    • PuTTYgen: puttygen.exe (या एफ़टीपी द्वारा )

      एक आरएसए और डीएसए प्रमुख पीढ़ी की उपयोगिता।

  2. आरएसए और पीपीके कुंजी उत्पन्न करें

    1. गिट बैश का उपयोग, ssh-keygenआरएसए सार्वजनिक / निजी कुंजी की एक जोड़ी उत्पन्न करने के लिए उपयोग करें। यह कैसे करें के बारे में अधिक जानकारी आधिकारिक जनरेटिंग एसएसएच कुंजी लेख पर पाई जा सकती है ।
    2. PuTTYgen में, अपनी मौजूदा ~/.ssh/id_rsa(निजी) कुंजी, Conversions→ के माध्यम से आयात करें Import key
    3. आयातित कुंजी को Save private keyबटन के माध्यम से सहेजें ~/.ssh/id_rsa.ppk
    4. अब आपकी ~/.sshनिर्देशिका में निम्नलिखित कुंजियाँ होनी चाहिए :

      • id_rsa: निजी (ओपनएसएसएच) आरएसए कुंजी
      • id_rsa.pub: पब्लिक (ओपनएसएसएच) आरएसए कुंजी
      • id_rsa.ppk: निजी (PuTTY) कुंजी
  3. विंडोज के लिए गिट स्थापित करें ।

    सुनिश्चित करें कि आप Plink का उपयोग करने के लिए चुनते हैं।

    गिट सेटअप

    नोट: यदि आपने पहले ही Git इंस्टॉल कर लिया है, तो आप इंस्टॉलर को फिर से चला सकते हैं और अपने डिफ़ॉल्ट 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. पेजेंट खोलें और यहां स्थित ppk कुंजी लोड करें ~/.ssh/id_rsa.ppk

    नोट: पेजेंट शुरू हो जाने के बाद, आप दाईं ओर, समय के बगल में, टास्कबार में स्थित सिस्टम ट्रे में इसके आइकन पर क्लिक कर सकते हैं।

  6. पोटीन खोलें और SSH के माध्यम से अपने कनेक्शन का परीक्षण करने के लिए कनेक्ट करें और ज्ञात होस्ट के रूप में सर्वर की कुंजी जोड़ें।

    पोटीन

    उदाहरण होस्टनाम:

    • गिटहब: git@github.com:22 (या ssh- एजेंट के माध्यम से ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (या ssh- एजेंट के माध्यम से ssh -Tv git@bitbucket.org)
  7. गेट बैश शुरू करो।

    आपको हर बार पासवर्ड डाले बिना अपने दूरस्थ होस्ट से पुश और पुल करने में सक्षम होना चाहिए।


छोटा रास्ता

हर बार जब आप अपने विंडोज खाते में लॉग इन करते हैं, तो आप अपनी कुंजी को स्वतः लोड करने के लिए अपनी स्टार्टअप निर्देशिका में एक शॉर्टकट रख सकते हैं।

वाया बैच स्क्रिप्ट

यह विचार इस प्रश्न के उत्तर से प्रेरित था:

सुपर यूजर: 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

विंडोज एक्सप्लोरर

  1. Windows Explorer में स्टार्टअप निर्देशिका पर नेविगेट करें।

    • उपयोगकर्ता Startup/निर्देशिका (पसंदीदा) यहां स्थित है:

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • सभी उपयोगकर्ता Startup/निर्देशिका यहां स्थित है:

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. फ़ोल्डर के अंदर राइट-क्लिक करें और New→ चुनेंShortcut

  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-बिट विंडोज ओएस का उपयोग कर रहे हैं, तो आपको %PROGRAMFILES%इसके बजाय पर्यावरण चर का उपयोग करना चाहिए %PROGRAMFILES(x86)%

    2. यदि आपने अपना शॉर्टकट सभी उपयोगकर्ता स्टार्टअप निर्देशिका में रखा है, तो सुनिश्चित करें कि वर्तमान उपयोगकर्ता के पास id_rsa.ppkउनकी ~/.sshनिर्देशिका में एक कुंजी है या कुंजी ऑटो-लोड नहीं होगी।


अंतिम शब्द

ये लो। अगली बार जब आप अपनी Windows प्रोफ़ाइल में प्रवेश करेंगे, तो आपको अपनी कुंजी के लिए पासवर्ड दर्ज करने के लिए पेजेंट प्रॉम्प्ट के साथ बधाई दी जाएगी। यदि आपने अपनी कुंजी पर एक पासवर्ड सेट नहीं किया है, तो आपकी कुंजी को बिना किसी संकेत के स्वचालित रूप से लोड किया जाना चाहिए।

यदि आप सुनिश्चित नहीं हैं कि यदि आपकी कुंजी भरी हुई है , तो सिस्टम ट्रे में पेजेंट के लिए संदर्भ मेनू से दृश्य कुंजी का चयन करके पेजेंट में वर्तमान कुंजी को देखें


3
महान विस्तृत निर्देश! मुझ से +1!
दलाल जूस आईटी

पुट्टीजेन में निजी कुंजी आयात करना मेरी लापता कड़ी थी
सौरभ कुमार

तस्वीर से सेटअप प्रक्रिया में कदम को सक्षम करने के लिए पुट्टी में एक कनेक्शन बनाना था।
user46193

बहुत खुबस! मेरे पास gitlab.com के साथ एक similair मुद्दा था और इसने इसे हल किया। गिट पोटीन का उपयोग कर रहा था जबकि मैंने जो कुंजी अपलोड की थी वह ओपनएसएसएच एक थी। धन्यवाद!
जगलक

4

सादा अंग्रेजी में

debug3: RSA1 कुंजी फ़ाइल /c/Users/Radu/\.ssh\github.ppk नहीं।

debug2: key_type_from_name: अज्ञात कुंजी प्रकार 'PuTTY-User-Key-File-2

पुट्टीजेन अलग-अलग चाबियों का निर्माण कर सकता है, जीथब एसएसएच 1-आरएसए चाहता है (और, मैं जीथ पर पेजेंट के साथ ssh2 कुंजी का उपयोग करता हूं)

जोड़ता

इस पोस्ट को गितुब के साथ पेजेंट मुद्दों पर डिबगिंग के बारे में भी देखें

>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 अप्रचलित है और इसमें कई सुरक्षा छेद हैं। गितुब इसका उपयोग नहीं करता है।
ग्रैविटी

'Ssh -T git@github.com' के समतुल्य यह गिथुब हाउटो डॉक्यूमेंटेशन से दुखी है। प्रविष्टि के लिए धन्यवाद।
एपीयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.