Quyền riêng tư SSH sử dụng GUI Git hoặc ssh-keygen quá mở


244

Gần đây tôi đã không thể sao chép hoặc đẩy vào github và tôi đang cố gắng tìm ra nguyên nhân gốc rễ.

Đây là trên cửa sổ

Tôi có cygwin + git cũng như msysgit.

Msysgit đã được cài đặt với các tùy chọn sau:

  • OpenSSH
  • Sử dụng Git từ Windows Command Prompt

Điều đó mang lại cho tôi 4 môi trường để thử sử dụng git trong:

  • Dấu nhắc cmd của Windows
  • Quyền hạn
  • Git Bash
  • Cygwin

Bằng cách nào đó tôi đã xoay sở để có được vị trí mà khi tôi cố sao chép kho lưu trữ bằng msysgit, cmd.exe hoặc Powershell, tôi gặp phải lỗi sau:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

Đây là sử dụng thư mục .ssh trong thư mục c: \ users \ ben \ của tôi, đây là những gì được sử dụng bởi msysgit. Tôi nghi ngờ cygwin hoạt động vì thư mục .ssh nằm ở nơi khác, nhưng tôi không chắc tại sao

Trong Git Bash, tôi kiểm tra các quyền:

$ ls -l -a ~/.ssh

Cung cấp cho tôi:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Các quyền này rõ ràng là quá thoải mái. Làm thế nào họ có được theo cách này, tôi không có ý tưởng.

Tôi có thể cố gắng thay đổi chúng ...

$ chmod -v -R 600 ~/.ssh

cho tôi biết:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Nhưng nó dường như không có tác dụng. Tôi vẫn nhận được lỗi tương tự, và làm

$ ls -l -a ~/.ssh

mang lại các quyền như trước.

CẬP NHẬT:

Tôi đã cố gắng sửa quyền cho các tệp đó trong cygwin và cygwin báo cáo quyền của họ một cách chính xác, gitbash không: văn bản thay thế http://cdn.cloudfiles.mosso.com/c54102/app7962031255436124.jpg

Bất kỳ ý tưởng về làm thế nào tôi thực sự có thể sửa chữa các quyền này?


1
Bạn có thể muốn cho chúng tôi biết hệ thống tệp gốc mà C: \ Users \ Ben \ đang sử dụng là gì. Có vẻ như hệ thống tập tin không hỗ trợ quyền thực sự hoặc ánh xạ đặt cược vào hệ vỏ và hệ thống tập tin không hoạt động đúng. Bạn có thể thay đổi quyền thông qua Windows ACL không?
Chen Levy

Tôi đang sử dụng Windows 7. Tôi có thể thay đổi quyền cho phép, nhưng chúng được cho là gì? Tất cả các tài liệu github / ssh nói rằng bạn cần 0600, nhưng tôi không biết điều đó có nghĩa là gì trong Windows ACL.
Ben Scheirman

2
Uh ... một chút của một sidenote ở đây, nhưng chmod-ing một thư mục đến 600 là một ý tưởng tồi. Các thư mục (và các tệp thực thi) luôn cao hơn một chữ số (700 không phải 600, 755 không phải 644). Làm điều đó trên một thư mục sẽ làm cho nó không thể liệt kê. Xem dartmouth.edu/~rc/help/faq/permissions.html để được giải thích chi tiết hơn.
Đánh dấu vào

Bạn có phản đối việc sử dụng PuTTY?
Greg Bacon

nếu nó khắc phục được sự cố của tôi thì không, nhưng tôi tò mò muốn biết tại sao thiết lập này không hoạt động với tôi.
Ben Scheirman

Câu trả lời:


361

Bạn đã thay đổi quyền trên toàn bộ thư mục, điều mà tôi đồng ý với Splash là một ý tưởng tồi. Nếu bạn có thể nhớ các quyền ban đầu cho thư mục là gì, tôi sẽ cố gắng đặt chúng trở lại đó và sau đó làm như sau

cd ~/.ssh
chmod 700 id_rsa

trong thư mục .ssh. Điều đó sẽ đặt tệp id_rsa thành rwx (đọc, ghi, thực thi) cho chủ sở hữu (bạn) và không có quyền truy cập cho mọi người khác.

Nếu bạn không thể nhớ cài đặt gốc là gì, hãy thêm người dùng mới và tạo một bộ khóa SSH cho người dùng đó, do đó tạo thư mục .ssh mới sẽ có quyền mặc định. Bạn có thể sử dụng thư mục .ssh mới đó làm tài liệu tham khảo cho các quyền để đặt lại thư mục .ssh và các tệp của bạn.

Nếu điều đó không hiệu quả, tôi sẽ thử thực hiện gỡ cài đặt msysgit, xóa TẤT CẢ các thư mục .ssh trên máy tính (chỉ để biện pháp an toàn), sau đó cài đặt lại msysgit với cài đặt mong muốn của bạn và thử bắt đầu lại hoàn toàn (mặc dù tôi nghĩ bạn đã nói với tôi bạn đã thử nó rồi

Đã chỉnh sửa: Cũng vừa tìm thấy liên kết này qua Google - Khắc phục "CẢNH BÁO: FILE KEY RIÊNG TƯ KHÔNG GIỚI HẠN!" trên Linux Mặc dù được nhắm mục tiêu vào linux, nhưng nó có thể hữu ích vì chúng ta đang nói về quyền liunx và như vậy.


2
Câu trả lời này đặc biệt áp dụng cho việc sử dụng cygwin hoặc msysgit (vì msysgit sử dụng tập hợp con của cygwin hoặc có thể là mingw32). Vấn đề là sự cho phép trên tập tin. Git thích làm việc với (hầu hết) các quyền linux (có thể là sản phẩm của đối tượng mục tiêu của nó). Sử dụng git.exe trong shell Winodws được biết là có vấn đề, tôi khuyên bạn nên gắn bó với msysgit. Ít nhất là cho đến khi GitSharp hoạt động đầy đủ.
Koby

2
Điều này không hoạt động trên windows 8 và cài đặt cygwin tháng 1 của tôi như sau chmod 700, nó đang hiển thị tệp dưới dạng rwxrwx ---. Quyền của nhóm được đặt thành bất cứ điều gì tôi đặt quyền người dùng và tôi không thể sử dụng khóa của mình.
Dean Hiller

1
@DeanHiller, sự cho phép của 700 sẽ như thế nào -rwx------. Vì vậy, những gì bạn đang hiển thị không chính xác nếu bạn thực hiện đúng lệnh chmod.
Koby

5
@Koby không, đó là một lỗi với công việc ... cần sử dụng chgrp -R Users ~ / .ssh và sau đó chmod hiện đang hoạt động và thực sự thay đổi quyền chính xác ..... một lỗi đã biết cuối cùng tôi đã tìm thấy bài khác.
Dean Hiller

2
Tôi có thể xác minh rằng có một số loại lỗi trong GitBash cho Windows trong đó các quyền chính xác KHÔNG THỂ được đặt với chmod hoặc các quyền không được đọc chính xác. chmod 600 id_rsd; ls -l id_rs -> -rwx-r
r--

74

Có một lỗi với chmod của cygwin, vui lòng tham khảo:

/superuser/397288/USE-cygwin-in-windows-8-chmod-600-does-not-work-as- ngạc nhiên

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa

Vì bất kỳ lý do gì, việc ánh xạ từ các quyền của Windows sang các quyền giống như cygwin / * nix hơi mờ. Mặc dù tôi đã xóa tất cả các quyền của người dùng khác ở phía Windows, cygwin vẫn áp dụng các quyền cho tôi, người dùng , cho một nhóm khác có tên None. (Tôi cho rằng đây là quy trình chuẩn khi một nhóm chưa được xác định một cách rõ ràng) thay đổi .Đây vào một nhóm rõ ràng Userscho là phép Cygwin để tách các điều khoản, và cuối cùng tôi đã có thể thiết lập 600 thay vì một tự động 660.
t-mart

3
Đây là câu trả lời đúng thực tế. Câu trả lời được bình chọn là câu trả lời đúng - Tôi nghĩ rằng những người đã bỏ phiếu là người dùng linux và không nhận ra rằng anh ta đang thực thi lệnh một cách chính xác. Tôi đã có cùng một vấn đề với cygwin ngày hôm nay. Cảm ơn!
michaelday

Trước khi áp dụng giải pháp này, khi tôi sử dụng chmod 600git sẽ phàn nàn rằng quyền của tôi vẫn còn 0660. Sửa quyền sở hữu nhóm làm cho chown áp dụng chính xác.
Guilherme Coleues

1
Tôi đã cập nhật Cygwin và nó đã hoạt động. Họ phải sửa lỗi.
Duncan Calvert

17

Đối với các hệ thống * nix, cách khắc phục rõ ràng là chmod 600 id_rsaofc, nhưng trên windows 7 tôi phải đập đầu vào tường một lúc, nhưng sau đó tôi đã tìm thấy giải pháp kỳ diệu:

đi tới Máy tính của tôi / Nhấp chuột phải / Thuộc tính / Cài đặt hệ thống nâng cao / Biến môi trường và XÓA biến (có thể từ cả hệ thống và môi trường người dùng):

CYGWIN

Về cơ bản, đó là một lỗ hổng trong mingw32 được sử dụng bởi git windows binary, nhìn thấy tất cả các tệp 644 và tất cả các thư mục 755 luôn. Loại bỏ biến môi trường không thay đổi hành vi đó, nhưng nó báo cho ssh.exe bỏ qua vấn đề. Nếu bạn đặt quyền thích hợp cho id_rsa của mình thông qua cài đặt bảo mật của nhà thám hiểm (thực sự không cần phải có bất kỳ người dùng nào khác ở đó ngoài chính bạn, không phải "mọi người", không phải "quản trị viên", không phải "hệ thống". , bạn vẫn sẽ an toàn.

Bây giờ, tại sao mingw32, một hệ thống khác với Cygwin, sẽ làm cho bất kỳ sử dụng các biến môi trường Cygwin, là ngoài tôi. Trông giống như một lỗi với tôi.


3
Điều này đã không làm việc cho tôi. Tôi vẫn nhận được thông báo "TẬP TIN CHÍNH HÃNG RIÊNG TƯ". Chỉ muốn cho bạn biết trong trường hợp người khác đến với chủ đề này với kết quả tương tự.
Luc

Đã làm cho tôi. Đây là asinine mặc dù. Tôi thậm chí không sử dụng Cygwin nữa. Ngoài ra, làm thế nào trên trái đất bạn đã tìm ra điều này?
gam

13

Tôi đang dùng XP và điều này cho phép Git Bash giao tiếp với Github (sau nhiều thất vọng):

  1. sao chép c:\cygwin\bin\cyg*(~ 50 tệp) vàoc:\Program Files\Git\bin\
  2. sao chép c:\cygwin\bin\ssh.exevào c:\Program Files\Git\bin\(ghi đè)
  3. Tạo tập tin c:\Documents and Settings\<username>\.ssh\configchứa:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (tùy chọn) Sử dụng ssh -v git@githubđể xem kết nối được gỡ lỗi.

  5. Hãy thử một lần đẩy!

Bối cảnh: Vấn đề chung là sự kết hợp của hai điều này:

  • LGI: mingw32 thấy tất cả các tệp là 644 (khác / có thể đọc được theo nhóm) và không có gì tôi đã thử trong mingw32, cygwin hoặc Windows có thể khắc phục nó.
  • Phiên bản SSH của mingw32 sẽ không cho phép khóa riêng (nói chung là một chính sách tốt trong máy chủ).

Nó không cần phải tạo một tập tin c:\Documents and Settings\<username>\.ssh\configvì bạn đã thay thế c:\Program Files\Git\bin\ssh.exe bằng c:\cygwin\bin\ssh.exe. Đúng ?
爱国者

Đồng ý với nhận xét "nhiều thất vọng". Đối với gitolite, tôi đã làm theo các bước này, sao chép cygwin / bin / cyg * vào thư mục Git của tôi (PortableGit - hoặc - Chương trình tập tin / Git), và sau đó tôi có thể sử dụng git từ Git-Bash, nhưng không phải là bash cygwin. Việc thêm cả thư mục bin PortableGit và Cygwin vào PATH của tôi cũng hoạt động với thành công hạn chế ... nhưng tôi vẫn phải di chuyển PortableGit / bin / ssh.exe {,. Bak} để nó không được sử dụng (ngay cả khi đó là giống như c: /cygwin/bin/ssh.exe). Về cơ bản ssh.exe cần được chạy từ thư mục cygwin do các phụ thuộc khác không được sao chép.
michael

Mặc dù bây giờ nó hoạt động với tôi, nhưng tiếp theo hãy thử chỉ là thêm cả Git và Cygwin vào PATH và di chuyển ssh.exe của Git ra khỏi đường để ssh.exe của cygwin được sử dụng (từ thư mục bin của cygwin).
michael

Thêm vào LogLevel DEBUGtệp .ssh \ config để nhận đầu ra gỡ lỗi từ quá trình ssh.exe được bắt đầu bởi git.exe.
knb

Cảm ơn - giải pháp này đã làm việc cho tôi! Cụ thể, từ c: \ cygwin \ bin \ Tôi đã sao chép ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll và cygz.dll sang C: \ Program Files \ Git \ bin \.
nexus-byte

10

Đối với Windows 7 sử dụng Git được tìm thấy ở đây (nó sử dụng MinGW, không phải Cygwin):

  1. Trong windows explorer, bấm chuột phải vào tệp id_rsa của bạn và chọn Thuộc tính
  2. Chọn tab Bảo mật và nhấp vào Chỉnh sửa ...
  3. Chọn hộp Từ chối bên cạnh Kiểm soát hoàn toàn cho tất cả các nhóm Quản trị viên EXCEPT
  4. Thử lại lệnh Git của bạn

1
Đây là nó cho tôi, nhưng bây giờ tôi có một vấn đề mới là ssh không thích mật khẩu của tôi, bất kỳ mật khẩu nào tôi cung cấp cho tệp chính của mình.
Jason Southwell

7

OK, đây là cách tôi thực sự buộc thay đổi các tệp Windows của mình về các quyền trên Win7: Tìm khóa ssh của bạn trong windows explorer: C: \ Users [your_user_name_here] .ssh \ id_rsa

Nhấp chuột phải vào tệp> Thuộc tính> tab Bảo mật> Nút nâng cao> Thay đổi quyền

Bây giờ loại bỏ tất cả mọi người không thực sự là tên người dùng của bạn. Điều này bao gồm người dùng Quản trị viên và Hệ thống. Tại thời điểm này, bạn có thể nhận được một cuộc đối thoại về việc kế thừa quyền - chọn tùy chọn KHÔNG kế thừa - vì chúng tôi chỉ muốn thay đổi tệp này.

Nhấn OK và lưu cho đến khi hoàn thành.

Tôi đã chiến đấu với điều này trong nhiều ngày vì các cửa sổ của tôi sẽ không thay đổi quyền truy cập tệp từ dòng lệnh. Bằng cách này, nó cũng HOÀN TOÀN được thực hiện - thay vì sử dụng những công việc thú vị xung quanh có thể gây ra hậu quả kỳ lạ.


6

Thay đổi quyền truy cập tệp từ Thuộc tính, vô hiệu hóa tính kế thừa và chạy chmod 400 không hoạt động đối với tôi. Các quyền cho tệp khóa riêng của tôi là:

-r - r ----- 1 alex Không 1766 ngày 8 tháng 3 13:04 /home/alex/.ssh/id_rsa

Sau đó tôi nhận thấy nhóm là Không có, vì vậy tôi mới chạy

chown alex: Quản trị viên ~ / .ssh / id_rsa

Sau đó, tôi có thể thay đổi thành công các quyền với chmod 400 và chạy git đẩy.


4

Dành cho người dùng MAC:

Thay đổi cài đặt của tệp cặp khóa của bạn bằng cách nhập tệp này vào thiết bị đầu cuối:

chmod og-r *filename.pem*

(đảm bảo bạn đang ở đúng thư mục hoặc tên tệp đường dẫn trong lệnh một cách chính xác).


3

Tôi giải quyết nó đang chạy:

chmod 400 ~/.ssh/id_rsa

Tôi hy vọng sẽ giúp. Chúc may mắn.


1
Thay đổi quyền thành 400 như Cristian đã đề cập, nó sẽ an toàn hơn.
SylvesterAbreuLoreto

2

Sau khi giải quyết vấn đề gần đây và đây là một trong những kết quả hàng đầu của google, tôi nghĩ rằng tôi sẽ giải quyết một công việc đơn giản xung quanh tài liệu thảo luận ở đây: http://code.google.com.vn/p/msysgit/issues/detail?id = 261 # c40

Đơn giản chỉ cần liên quan đến việc ghi đè sys.exe mysys với ssh.exe cygwin của bạn


2

Tôi đã gặp vấn đề tương tự trên Windows XP gần đây. Tôi đã cố gắng chmod 700 trên tệp ~ / .ssh / id_rsa của mình nhưng có vẻ như nó không hoạt động. Khi tôi xem xét các quyền sử dụng ls -l trên ~ / .ssh / id_rsa, tôi có thể thấy rằng các quyền hiệu quả của tôi vẫn là 644.

Sau đó, tôi nhớ rằng các quyền của windows cũng kế thừa các quyền từ các thư mục và thư mục vẫn mở cho mọi người. Một giải pháp có thể là đặt quyền cho thư mục, nhưng tôi nghĩ cách tốt hơn là bảo hệ thống bỏ qua tính kế thừa cho tệp này. Điều này có thể được thực hiện bằng cách sử dụng tùy chọn nâng cao trên tab bảo mật trong các thuộc tính của tệp và bỏ chọn "kế thừa từ quyền của phụ huynh ..."

Điều này có thể hữu ích cho những người khác có cùng vấn đề.


1

Tôi đang chơi ngay bây giờ với Git 1.6.5 và tôi không thể sao chép thiết lập của bạn:

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone git@github.com:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh git@github.com
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmod không sửa đổi quyền truy cập tập tin cho các khóa của tôi.

Môi trường:

  • Windows Server 2008 SP2 trên NTFS
  • người dùng: quản trị viên
  • bình môi trường:
    • PLINK_PROTOCOL = ssh
    • TRANG CHỦ = / c / hồ sơ / nhà

Cập nhật: Git 1.6.5.1 cũng hoạt động.


hấp dẫn. Có vẻ như bạn đang sử dụng tùy chọn putty?
Ben Scheirman

1

Đây là một vấn đề đặc biệt liên quan đến Windows, trong đó không đủ để chỉ chỉnh sửa các tệp một cách chính xác. Bạn phải thiết lập môi trường của bạn.

Trên Windows, điều này làm việc cho tôi:

  1. Cài đặt cygwin.

  2. Thay thế sys.exe msysgit bằng ssh.exe của cygwin.

  3. Sử dụng cygwin bash, chmod 600 tệp khóa riêng, là "id_rsa" đối với tôi.

  4. Nếu nó vẫn không hoạt động, hãy chuyển đến Bảng điều khiển -> Thuộc tính hệ thống -> Nâng cao -> Biến môi trường và thêm biến môi trường sau. Sau đó lặp lại bước 3.

    Giá trị biến
    CYGWIN sbmntsec


1

Tôi đã có thể khắc phục điều này bằng cách thực hiện hai điều, mặc dù bạn có thể không phải thực hiện bước 1.

  1. sao chép từ cygwin ssh.exe và tất cả cyg *.

  2. làm theo các bước từ: http://zylstra.wordpress.com/2008/08/29/overcome-herokus- allow-denied-publickey-pro Hiệu /

    Tôi đã thêm một số chi tiết vào tập tin ~ / .ssh / config của mình:

Lưu trữ heroku.com
Tên máy chủ heroku.com
Cổng 22 Danh tính Chỉ
có Có
Danh tính ~ / .ssh / id_heroku
TCPKeepAlive có
Người dùng brandon

Tôi đã phải sử dụng Người dùng làm địa chỉ email của mình cho heroku.com Lưu ý: điều này có nghĩa là bạn cần tạo khóa, tôi đã làm theo cách này để tạo khóa và khi nó nhắc tên của khóa, hãy nhớ chỉ định id_heroku http: / /help.github.com/win-set-up-git/

  1. sau đó thêm khóa:
    heroku key: add ~ / .ssh / id_heroku.pub

1

Điều gì đã làm các trick cho tôi là để cập nhật Cygwin biến môi trường với: " tty nodosfilewarning ". Thậm chí không cần phải bấm phím.


0

Không phải là câu trả lời trực tiếp cho câu hỏi chính, nhưng về câu hỏi của bạn về cách thư mục của cygwin hoạt động ... Theo nguyên tắc chung, cygwin đặt tất cả các tệp "của bạn" theo phương trình của tên người dùng c: \ cygwin \ home \. Nó xử lý thư mục đó cho mọi cài đặt dành riêng cho người dùng thay vì thư mục người dùng Windows.


0

Trừ khi có lý do mà bạn muốn giữ cặp khóa riêng / chung đó (id_rsa / id_rsa.pub) hoặc thích đập đầu vào tường, tôi khuyên bạn chỉ nên tạo lại chúng và cập nhật khóa công khai của bạn trên github.

Bắt đầu bằng cách tạo một bản sao lưu của thư mục ~ / .ssh của bạn.

Nhập thông tin sau và trả lời "y" xem bạn có muốn ghi lại các tệp hiện có không.

ssh-keygen -t rsa

Sao chép nội dung của khóa công khai vào clipboard của bạn. (Dưới đây là cách bạn nên làm trên máy Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Chuyển đến tài khoản của bạn trên github và thêm khóa này.

Name: My new public key
Key: <PASTE>

Thoát khỏi thiết bị đầu cuối của bạn và khởi động lại một cái mới.

Nếu bạn nhận được thông báo lỗi vô nghĩa như "Nhập mật khẩu" cho khóa chung của bạn khi bạn chưa bao giờ nhập, hãy xem xét kỹ thuật bắt đầu lại này. Như bạn thấy ở trên, nó không phức tạp.


0

Tôi không bao giờ quản lý để có được git để làm việc hoàn toàn trong Powershell. Nhưng trong git bash shell, tôi không có bất kỳ vấn đề nào liên quan đến quyền và tôi không cần thiết lập chmod, v.v ... Sau khi thêm ssh vào Github, tôi đã chạy và chạy.



0

Bạn đã sao chép tập tin chính từ một máy khác?

Tôi vừa tạo một id_rsa tập tin trên máy khách sau đó dán khóa trong tôi muốn. Không có vấn đề quyền. Không có gì để thiết lập. Nó chỉ hoạt động. Nó cũng hoạt động nếu bạn sử dụng PuTTYgen để tạo khóa riêng.

Có thể một số vấn đề nhóm ẩn nếu bạn sao chép nó từ một máy khác.

Đã thử nghiệm trên hai máy Windows 8.1. Sử dụng Sublime Text 3 để sao chép và dán khóa riêng. Sử dụng Git Bash (Git-1.9.4-preview20140611).


0

Sau khi nâng cấp cài đặt Cygwin của tôi lên phiên bản vào khoảng tháng 2 năm 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin), tôi đột nhiên chạy vào UNPROTECTED PRIVATE KEY FILEcảnh báo.

Tôi đã sửa lỗi này sau khi chạy lệnh sau:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( câu trả lời khác cho câu hỏi khác cung cấp thêm ngữ cảnh)


0

Câu trả lời của @ koby không phù hợp với tôi, vì vậy tôi có một chút thay đổi.

cd ~/.ssh
chmod 700 id_rsa.pub

Điều này hoạt động tốt cho tôi trên Mac.


0

Tôi gặp vấn đề tương tự trên Windows 10 khi tôi cố gắng SSH vào hộp Vagrant. Đây có vẻ như là một lỗi trong phiên bản OpenSSH cũ. Điều gì làm việc cho tôi:

  1. Cài đặt OpenSSH mới nhất từ http://www.mls-software.com/opensshd.html
  2. trong đó ssh

(Lưu ý ".exe" nếu bạn đang sử dụng Powershell)

Bạn có thể thấy một cái gì đó như:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

Lưu ý rằng trong ví dụ trên, OpenSSH mới nhất đứng thứ hai trong đường dẫn nên nó sẽ không thực thi.

Để thay đổi thứ tự:

  1. Nhấp chuột phải vào nút Windows -> Cài đặt -> "Chỉnh sửa biến môi trường hệ thống"
  2. Trên tab "Nâng cao", nhấp vào "Biến môi trường ..."
  3. Trong Biến hệ thống chỉnh sửa "Đường dẫn".
  4. Chọn "C: \ Chương trình tập tin \ OpenSSH \ bin" và "Di chuyển lên" để nó xuất hiện trên đầu trang.
  5. Nhấn vào OK
  6. Khởi động lại Bảng điều khiển của bạn để các biến môi trường mới có thể áp dụng.

0

Hệ thống của tôi có một chút lộn xộn với bash / cygwin / git / msysgit / may-more ...

chmod không có tác dụng với chìa khóa, hoặc config tệp.

Sau đó, tôi quyết định tiếp cận nó từ Windows, hoạt động.

  1. Bấm chuột phải vào tệp có quyền cần sửa.
  2. Chọn Properties.
  3. Chọn Securitytab.
  4. Nhấp vào Advancedgần phía dưới.
  5. Nhấp vào Change, bên cạnh Ownergần đầu trang.
  6. Nhập "Tên người dùng tuyệt vời của tôi" (rõ ràng thay đổi tên người dùng Windows hiện tại của bạn) và Check Namessau đó nhấp vào OK.
  7. Bên dưới Permission entries:, tô sáng từng người dùng không phải là "Tên người dùng tuyệt vời của tôi" và chọn Remove. Lặp lại điều này cho đến khi "My-Awesome-Username" là người duy nhất còn lại.
  8. Chọn "My-Awesome-Username" và nhấp vào Editbên dưới.
  9. Hãy chắc chắn rằng Type:ở trên cùng được đặt thành Allow, và sau đó đánh dấu vào hộp kiểm bên cạnh Full control.
  10. Hit OK, Apply, OK, OK.

  11. Hãy thử lại ngay bây giờ ...

Có vẻ như đôi khi mock-bash không thể kiểm soát quyền sở hữu tệp. Điều này đặc biệt kỳ lạ, vì nó được tạo ra từ một kịch bản giả. Đi hình.


0

Không có cách giải quyết nào được đề xuất ở đây (chmod / chgrp / setfacl / windows perms) làm việc với tôi với msys64 trên máy ảo công ty Windows 7. Cuối cùng, tôi đã giải quyết vấn đề bằng cách sử dụng một tác nhân ssh với khóa được cung cấp trên stdin. Thêm phần này vào của tôi .bash_profilelàm cho nó trở thành mặc định cho đăng nhập của tôi:

eval $(ssh-agent -s)
cat ~/.ssh/id_rsa | ssh-add -k -

Bây giờ tôi có thể thực hiện git đẩy và kéo với điều khiển từ xa ssh.

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.