Kết nối với github bằng khóa SSH được tạo bởi PuTTY trong Windows 7


20

Trên bản cài đặt Windows 7 Enterprise nguyên sơ khác:

  1. Cài đặt PuTTY 0,62
  2. Tạo cặp khóa công khai / riêng tư với puttygen.exe
  3. Thêm khóa công khai để dán vào OpenSSH ủy quyền_key vào tài khoản github
  4. Thêm khóa riêng vào cuộc thi
  5. Cài đặt msysgit 1.7.8 với các tùy chọn sau:
    • Sử dụng Git từ Windows Command Prompt
    • Sử dụng (Rùa) Plink chỉ để sửa plink.exe
  6. Đảm bảo vân tay github được thêm vào know_host bằng cách kết nối với github.com trong PuTTY và chấp nhận dấu vân tay
  7. Chỉnh sửa ~/.ssh/configđể đọc:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile ~\.ssh\github.ppk
    

ssh -vvvT git@github.comđưa ra: http://pastebin.com/Tu3Fc6nJ . Lưu ý rằng tôi đang được nhắc nhập cụm từ mặc dù nó đã được tải thành công vào cuộc thi.

Tôi đã thử: chmod 700 ~/.ssh; chmod 600 ~/.ssh/*từ bên trong Git Bash nhưng không có hiệu lực như được xác minh bởi ls -l.

Tôi nên lưu ý rằng tôi đã có thiết lập chính xác này hoạt động trên bản cài đặt Windows 7 trước đó. Tất cả mọi thứ là giống hệt như tôi có thể nói.

Điều gì làm việc là tạo các khóa từ bên trong Git Bash. Tuy nhiên, tôi không thể thêm những chìa khóa đó vào cuộc thi, đó là một nỗi đau rất lớn. Trên thực tế, dường như mọi nỗ lực sử dụng các khóa được tạo bởi PuTTY đều không có kết quả.

Bất kỳ cái nhìn sâu sắc về những gì ngăn chặn điều này làm việc dựa trên các bản ghi? Cảm ơn trước.


với -vT, xin vui lòng, mức độ chi tiết ít hơn
Lazy Badger

Câu trả lời:


20

Bạn đang nhầm lẫn hai chương trình hoàn toàn riêng biệt: PuTTY và OpenSSH.

  • plinkvà cuộc thi là một phần của PuTTY. Các sshlệnh là một phần của OpenSSH. Không rõ chương trình nào đang được Git sử dụng; bạn cần kiểm tra %GIT_SSH%biến môi trường cho điều đó.

  • Các chương trình sử dụng các giao thức đại lý khác nhau; OpenSSH không thể sử dụng Cuộc thi của PuTTY; nó có cái riêng của nó ssh-agent(điều không may là hơi phức tạp khi sử dụng trên Windows).

  • PuTTY và plinklưu trữ cài đặt phiên trong sổ đăng ký, có thể chỉnh sửa trong giao diện của PuTTY. Họ không sử dụng bất cứ thứ gì trong ~/.ssh/; thư mục này chỉ được sử dụng bởi OpenSSH.

  • Các định dạng khóa riêng được sử dụng bởi OpenSSH và PuTTY là khác nhau; bạn không thể sử dụng .ppkkhóa với OpenSSH. Nếu bạn đã tạo khóa trong PuTTYgen, bạn phải sử dụng lệnh "Xuất → 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:'
    

Tôi nhận thức được sự khác biệt và như được chỉ ra trong bài viết gốc, git đã được thiết lập để sử dụng plink khi cài đặt. Tôi đã xác minh rằng điều này đã thay đổi biến môi trường thích hợp để trỏ đến plink.exe. Tôi muốn sử dụng các khóa PuTTY (và điều này đã hoạt động trong quá khứ!) Với git, và thực tế là nó không hoạt động mặc dù plink được sử dụng là kỳ lạ ...
Radu

Về cơ bản, ngay bây giờ tôi có thể làm cho nó hoạt động với các khóa OpenSSH, nhưng không phải với các khóa PuTTY. Tôi đã thử cài đặt lại PuTTY và cũng tạo các khóa mới. TThat dường như không phải là vấn đề. Bất cứ ý tưởng những gì nó có thể được?
Radu

1
@Radu: plinkkhông hỗ trợ định dạng khóa OpenSSH. Nếu phiên bản của bạn có, thì đó không phải plinklà bạn đang sử dụng; nó là cái gì đó khác
grawity

1
@Radu: Ngoài ra, bài viết gốc chỉ ra điều ngược lại với yêu cầu của bạn. Trước tiên, bạn tạo một khóa với PuTTYgen và tải nó vào Pagete, nhưng sau đó bạn đi đến việc định cấu hình OpenSSH và phàn nàn rằng " sshlời nhắc cho cụm từ mật khẩu mặc dù đã được tải vào Pagete". Bạn đang nhầm lẫn giữa hai chương trình.
grawity

Tôi chưa bao giờ nói rằng plink hỗ trợ OpenSSH - Git Bash, tuy nhiên, vì theo mặc định, nó sử dụng OpenSSH. Đọc lại, bạn đã đúng, tôi đã nhầm lẫn những điều như bạn đã nói, ~/.ssh/configkhông được PuTTY sử dụng. Tuy nhiên, tôi muốn nhắc lại rằng GIT_SSH được chỉ ra là plink, nhưng nếu tôi sửa đổi tệp cấu hình ssh cho OpenSSH, các thay đổi được phản ánh trong Git Bash khi cố gắng kết nối với github. Về cơ bản, tôi tin rằng biến môi trường GIT_SSH đang bị bỏ qua và tôi cho rằng đó là một cái gì đó cụ thể cho hệ điều hành của tôi. Tôi sẽ thử một hình ảnh mới vào ngày mai.
Radu

20

Tôi đã tập hợp một hướng dẫn từng bước để có được thiết lập Git cho các cửa sổ bằng ứng dụng Plink của PuTTY để xác thực SSH.

Thực hiện theo bên dưới:


Thiết lập

  1. Cài đặt putty.zip có sẵn tại Trang Tải xuống PuTTY hoặc bạn có thể tải xuống riêng lẻ.

    • PuTTY: putty.exe (hoặc bằng FTP )

      Máy khách SSH và Telnet.

    • Plink: plink.exe (hoặc bằng FTP )

      Giao diện dòng lệnh cho mặt sau PuTTY kết thúc.

    • Cuộc thi: pageant.exe (hoặc bằng FTP )

      Một tác nhân xác thực SSH cho PuTTY, PSCP, PSFTP và Plink.

    • PuTTYgen: puttygen.exe (hoặc bằng FTP )

      Một tiện ích tạo khóa RSA và DSA.

  2. Tạo khóa RSA và PPK

    1. Sử dụng Git Bash, sử dụng ssh-keygenđể tạo một cặp khóa công khai / riêng tư RSA. Thông tin thêm về cách thực hiện việc này có thể được tìm thấy trên bài viết chính thức Tạo khóa SSH .
    2. Trong PuTTYgen, nhập khóa ~/.ssh/id_rsa(riêng tư) hiện tại của bạn , thông qua ConversionsImport key.
    3. Lưu khóa nhập qua Save private keynút như ~/.ssh/id_rsa.ppk.
    4. Bây giờ bạn sẽ có các khóa sau trong ~/.sshthư mục của bạn :

      • id_rsa: Khóa RSA riêng tư (OpenSSH)
      • id_rsa.pub: Khóa RSA công khai (OpenSSH)
      • id_rsa.ppk: Khóa riêng (PuTTY)
  3. Cài đặt Git cho Windows .

    Hãy chắc chắn rằng bạn chọn sử dụng Plink.

    Thiết lập Git

    Lưu ý: Nếu bạn đã cài đặt Git, bạn có thể chạy lại trình cài đặt và đặt Plink làm ứng dụng SSH mặc định của mình.

  4. Đặt đường dẫn Môi trường của bạn.

    1. Trong Bảng điều khiển , điều hướng đến chế độ xem Hệ thống.
    2. Chọn cài đặt hệ thống nâng cao .
    3. Trong cửa sổ Thuộc tính hệ thống , bấm vào tab Nâng cao .
    4. Nhấn vào đây Environment variables….
    5. Thêm các biến hệ thống sau (nếu chưa được đặt):

      • GIT_HOME: C:\Program Files\Git
      • GIT_SSH: C:\Program Files (x86)\PuTTY\plink.exe
    6. Nối thư mục nhị phân Git vào đường dẫn hệ thống.

      • Path: %Path%;%GIT_HOME%\bin
  5. Mở cuộc thi và tải khóa ppk tại ~/.ssh/id_rsa.ppk.

    Lưu ý: Khi Cuộc thi đã bắt đầu, bạn có thể nhấp vào biểu tượng của nó trong khay hệ thống nằm trên thanh tác vụ, bên cạnh thời gian, bên phải.

  6. Mở Putty và kết nối để kiểm tra kết nối của bạn thông qua SSH và thêm khóa của máy chủ làm máy chủ đã biết.

    Putty

    Ví dụ tên máy chủ:

    • GitHub: git@github.com:22 (hoặc thông qua ssh-agent ssh -Tv git@github.com)
    • BitBucket: git@bitbucket.org:22 (hoặc thông qua ssh-agent ssh -Tv git@bitbucket.org)
  7. Bắt đầu Git Bash.

    Bạn sẽ có thể đẩy và kéo từ máy chủ từ xa mà không cần nhập mật khẩu mỗi lần.


Đường tắt

Bạn có thể đặt một phím tắt trong thư mục khởi động để tự động tải khóa của bạn mỗi khi bạn đăng nhập vào tài khoản Windows của mình.

Qua tập lệnh hàng loạt

Ý tưởng này được lấy cảm hứng từ một câu trả lời cho câu hỏi này:

Siêu người dùng: Làm thế nào để tạo một lối tắt từ 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

Qua Windows Explorer

  1. Điều hướng đến thư mục khởi động trong Windows Explorer.

    • Thư mục người dùng Startup/(ưu tiên) được đặt tại:

      %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
      
    • Tất cả Startup/thư mục Người dùng được đặt tại:

      %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
      
  2. Nhấp chuột phải vào thư mục và chọn NewShortcut

  3. Trong hộp thoại Tạo lối tắt , nhập thông tin sau.

    • Vị trí: "C:\Program Files (x86)\PuTTY\pageant.exe"
    • Tên: Pageant Autoload
  4. Nhấp chuột phải vào phím tắt mới và chọn Propertiestừ menu ngữ cảnh.

  5. Sửa đổi các trường sau trong tab Shortcut :

    • Mục tiêu: "%PROGRAMFILES(x86)%\PuTTY\pageant.exe" id_rsa.ppk
    • Bắt đầu vào: %USERPROFILE%\.ssh

     
    Ghi chú:

    1. Nếu bạn đang sử dụng HĐH Windows 32 bit, bạn nên sử dụng %PROGRAMFILES%biến môi trường thay vì %PROGRAMFILES(x86)%.

    2. Nếu bạn đã đặt phím tắt trong thư mục khởi động Tất cả người dùng, hãy đảm bảo rằng người dùng hiện tại có một id_rsa.ppkkhóa trong ~/.sshthư mục của họ hoặc khóa sẽ không tự động tải.


Đóng nhận xét

Có bạn có nó. Lần tới khi bạn đăng nhập vào hồ sơ Windows của mình, bạn sẽ được chào đón bằng lời nhắc về Cuộc thi để nhập mật khẩu cho khóa của mình. Nếu bạn không đặt mật khẩu trên khóa của mình, thì khóa của bạn sẽ được tải tự động mà không cần nhắc.

Nếu bạn không chắc chắn liệu khóa của bạn đã tải hay chưa, hãy xem các khóa hiện tại trong Cuộc thi bằng cách chọn Phím Xem từ menu ngữ cảnh cho Cuộc thi trong khay hệ thống.


3
Hướng dẫn chi tiết tuyệt vời! +1 từ tôi!
Pimp Juice IT

Nhập khóa riêng trong puttygen là liên kết bị thiếu của tôi
Saurabh Kumar

Phải tạo kết nối trong Putty để cho phép bước trong quy trình thiết lập từ ảnh.
dùng46193

Tuyệt diệu! Tôi đã có một vấn đề similair với gitlab.com và điều này đã giải quyết nó. Git đã sử dụng putty trong khi khóa tôi đã tải lên là OpenSSH. Cảm ơn bạn!
jgalak

4

Bằng tiếng Anh

debug3: Không phải là tệp khóa RSA1 /c/Users/Radu/\.ssh\github.ppk.

debug2: key_type_from_name: loại khóa không xác định 'PuTTY-User-Key-File-2

Puttygen có thể xây dựng các khóa khác nhau, Github muốn SSH1-RSA (?, Tôi sử dụng khóa ssh2 với Pageant trên github)

Thêm

Xem thêm bài đăng này về gỡ lỗi các vấn đề cuộc thi với 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 đã lỗi thời và có nhiều lỗ hổng bảo mật. Github không sử dụng nó.
tham lam

Điều này tương đương với 'ssh -T git@github.com' đáng tiếc bị thiếu trong tài liệu hướng dẫn github. Cảm ơn đã đăng bài viết.
Epu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.