Sử dụng git qua cygwin trên windows 8


16

Tôi đã có bản xem trước windows 8 dev (không chắc nó có liên quan hay không, nhưng tôi chưa bao giờ gặp rắc rối này trên máy w7) và tôi đang cố gắng sao chép một repo git từ github.

Vấn đề là ~ / .ssh / id_rsa của tôi có 440 quyền và nó phải là 400. Tôi đã thử điều chỉnh nó nhưng mọi thay đổi về quyền của người dùng sẽ được phản ánh trong các quyền của nhóm (ví dụ: chmod 600 cho kết quả 660, v.v. ). Điều này dường như là không đổi trong suốt bất kỳ tập tin nào trong toàn bộ hệ thống tập tin.

Tôi đã thử nhắn tin với ACL nhưng không có kết quả (toàn quyền kiểm soát người dùng của tôi và từ chối tất cả mọi người dẫn đến 000)

Dưới đây là một vài kết quả để giúp:

$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'

Tôi nhận ra rằng tôi có thể sử dụng msysgit hoặc một cái gì đó, nhưng tôi muốn có thể làm mọi thứ từ một thiết bị đầu cuối duy nhất

Chỉnh sửa: Msysgit không hoạt động vì những lý do tương tự


Vấn đề tương tự ở đây. Xem trước người tiêu dùng Windows 8.
Simon Hartcher

"Tôi đã thử nhắn tin với ACL nhưng không có kết quả (toàn quyền kiểm soát người dùng của tôi và từ chối tất cả mọi người dẫn đến 000) " Vì vậy, ls -lhiển thị các quyền như 000( ----------) - nhưng bạn vẫn có thể đọc tệp và làm sshgit clonekhiếu nại về nó? Tôi suy đoán rằng sshsẽ không phàn nàn về các quyền dường như quá nghiêm ngặt. Nhìn nhanh vào mã nguồn có xu hướng xác nhận điều này, nhưng tôi chưa kiểm tra nó.
Keith Thompson

Câu trả lời:


26

Không có nhu cầu cho một nhóm trống.

Trong quá trình cài đặt cygwin, tất cả các tệp không thuộc nhóm nào. Bạn có thể kiểm tra điều này bằng cách làm một ls -al. Bạn sẽ thấy rằng không có nhóm ("không") trên các tệp. Chỉ cần thay đổi nó thành Người dùng:

chgrp Users *

Sau này, bạn có thể chmodbất cứ điều gì bạn thích.


chgrp Users *sẽ chỉ thay đổi tất cả các tập tin và thư mục trong $PWD. Để thay đổi tất cả các thư mục con / tệp cũng như $ PWD, hãy sử dụng tùy chọn -R:chgrp -R users *
adam

4

Tôi đã tìm thấy một bản hack dành riêng cho Cygwin để khắc phục điều này cho đến bây giờ.

Phiên bản ngắn:
Đơn giản chỉ cần tạo một nhóm cửa sổ trống mới, sử dụng chgrp để thay đổi nhóm id_rsa thành cái này, sau đó từ chối quyền đọc / ghi cho nhóm.

Phiên bản dài:
Bấm phím siêu và gõ lusrmgr.msc . Sử dụng trình quản lý này để tạo một nhóm trống, được gọi là EMPTY_GROUP

Bây giờ chúng tôi cần nói với Cygwin về nhóm mới này.

mkgroup > /etc/group

Tiếp theo, chúng tôi cập nhật nhóm id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Cuối cùng, hãy tìm id_rsa trong Windows Explorer và trong tab Bảo mật trong Thuộc tính, từ chối quyền đọc / ghi và bạn nên truy cập.

Tôi không chắc làm thế nào Cygwin có thể xử lý việc này trong 7 nhưng không phải 8, nhưng vấn đề dường như bắt nguồn từ nhóm tệp id_rsa là Không, một nhóm luôn có quyền truy cập đọc / ghi đầy đủ.

Ngoài ra, điều này dường như chỉ hoạt động với ssh.exe đi kèm với Cygwin, vì vậy nếu bạn muốn sử dụng say ssh với git, hãy ghi đè ssh.exe từ bin trong cài đặt git của bạn với một từ thư mục bin trong cài đặt Cywgin của bạn .


2

Giành chiến thắng 8 + Cygwin

Tôi đang dùng Windows 8, 64 bit. Làm như sau sẽ giải quyết nó cho tôi:

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name

1

Trong cygwin, nhập các lệnh sau:

  • Đặt nhóm chính xác vào thư mục nhà:

    chgrp -Rv HomeUsers /home

  • Đặt quyền chính xác cho các tệp nhận dạng ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: câu trả lời được chấp nhận trước đó đã hết hạn. Tên nhóm là "HomeUsers", không phải "Người dùng", chưa thể bình luận.


1

Tôi muốn bình luận về vấn đề đó là tốt. Tôi đã gặp một vấn đề tương tự trên PC Windows 7 của mình khi sử dụng git thông qua Cygwin.

Khi cố gắng thay đổi từ kho lưu trữ git cục bộ của tôi sang kho lưu trữ từ xa (sử dụng ssh và khóa để xác thực), git đã gửi một thông báo rằng các quyền 0660 quá mở cho tệp

~ / .ssh / id_rsa.

Tất nhiên là ổn khi ssh-agent từ chối khóa riêng mở này.

Vì vậy, tôi đã thử những thứ được đề cập trong luồng này và các luồng khác có liên quan đến quyền sở hữu và mẫu rwx của tệp và thư mục ~ / .ssh

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

Tuy nhiên, lỗi tương tự đã được ném đi lặp lại.

Vì một số lý do, cần phải giết tiến trình ssh-agent trong cygwin và thực thi lệnh sau trong shell bourne again (bash).

eval `ssh-agent -s`

Đừng quên thêm danh tính mong muốn vào tác nhân ssh, vd

ssh-add ~/.ssh/id_rsa

Sau đó, tôi lặp lại một lệnh đẩy hợp lệ như

git push origin master

và mọi thứ hoạt động tốt


0

Để mở rộng câu trả lời của Roi Danton . Nếu bạn đã cài đặt Windows 8 so với cài đặt Windows cũ và thư mục cygwin trước đó của bạn vẫn còn hoạt động, bạn sẽ cần phải thực hiện một số điều khác trước.

Đầu tiên, hãy sở hữu các thư mục / tập tin Cygwin

Sẽ có một số tài khoản người dùng được liên kết với thư mục và thư mục con / tệp trông giống như S-1-2-34-1234567890-1234567890-1234567890-123

Tài khoản người dùng

Xóa chúng và sở hữu tài khoản người dùng của riêng bạn.

  1. Truy cập Propertiesthư mục cygwin
  2. Bấm Advancedvào Securitytab
  3. ChangeChủ cho chính mình. Bạn có thể nhập tên của bạn hoặc địa chỉ email được liên kết
  4. Remove bất kỳ người dùng không xác định từ danh sách
  5. Nhấp chuột Enable Inheritance
  6. Kiểm tra `Thay thế tất cả các mục quyền của đối tượng con bằng các mục nhập quyền kế thừa từ đối tượng này
  7. Nhấp vào OKở dưới cùng và sau đó Yesvào hộp thoại.

Hộp thoại bảo mật Windows

Sau đó, trong Cygwin, thay đổi nhóm người dùng của tất cả các tệp chính

Từ câu trả lời của Roi Danton :

Trong quá trình cài đặt cygwin, tất cả các tệp không thuộc nhóm nào. Bạn có thể kiểm tra điều này bằng cách làm một ls -al.

  1. Mở Cygwin và điều hướng đến .sshthư mục -cd ~/.ssh
  2. Chạy chgrp Users *- điều này sẽ cho phép bạn để chmodcác tập tin đúng cách.
  3. Cuối cùng, chạy chmod 400 *. 600 cũng sẽ làm việc.

Kiểm tra để xem nếu nó hoạt động

Đơn giản chỉ cần ssh đến máy chủ của bạn lựa chọn. Trong trường hợp của tôi, Bitbucket của nó .

Kết quả tốt:

$ ssh hg@bitbucket.org
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

Kết quả xấu:

$ ssh hg@bitbucket.org
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).

2
Với OpenSSH cho Windows (không phải cygwin), tôi nhận được chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": nhóm không hợp lệ `Người dùng '
Jonathan

0
  1. id_rsa -> Nhấp chuột phải -> Thuộc tính -> Bảo mật -> Chỉnh sửa
  2. Xóa tất cả các nhóm và người dùng (Không nhấn OK hoặc Áp dụng)
  3. Thêm -> Nhập tên người dùng hiện tại của bạn -> Kiểm tra tên
  4. Cho phép "Kiểm soát hoàn toàn"
  5. Ứng dụng

(Windows 10 Pro)

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.