Menggunakan git melalui cygwin di windows 8

16

Saya punya pratinjau dev windows 8 (tidak yakin apakah itu relevan, tapi saya tidak pernah memiliki kerumitan ini pada w7) mesin dan saya mencoba untuk mengkloning git repo dari github.

Masalahnya adalah bahwa ~ / .ssh / id_rsa saya memiliki 440 izin dan harus 400. Saya sudah mencoba chmodding itu tetapi setiap perubahan pada izin pengguna tercermin dalam izin grup (yaitu chmod 600 menghasilkan 660, dll ). Ini tampaknya konstan di seluruh file di seluruh sistem file.

Saya sudah mencoba mengacaukan ACL tetapi tidak berhasil (kontrol penuh pada pengguna saya dan menolak semua orang menghasilkan 000)

inilah beberapa keluaran untuk membantu:

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

Saya menyadari bahwa saya dapat menggunakan msysgit atau sesuatu, tetapi saya lebih suka untuk dapat melakukan semuanya dari satu terminal

Sunting: Msysgit juga tidak berfungsi karena alasan yang sama

9point6
sumber
Masalah yang sama di sini. Windows 8 Consumer Preview.
Simon Hartcher
"Saya sudah mencoba mengacaukan ACL tetapi tidak berhasil (kontrol penuh pada pengguna saya dan menyangkal semua orang menghasilkan 000) " Jadi ls -lmenunjukkan izin sebagai 000( ----------) - tetapi apakah Anda masih dapat membaca file, dan melakukan sshdan git clonemengeluh tentang itu? Saya berspekulasi bahwa sshtidak akan mengeluh tentang izin yang tampaknya terlalu ketat. Pandangan cepat pada kode sumber cenderung mengkonfirmasi ini, tetapi saya belum mengujinya.
Keith Thompson

Jawaban:

26

Tidak Perlu untuk grup kosong.

Selama Instalasi cygwin, semua file tidak termasuk grup. Anda dapat memeriksa ini dengan melakukan ls -al. Anda akan melihat bahwa tidak ada grup ("tidak ada") di file. Ubah saja menjadi Pengguna:

chgrp Users *

Setelah ini, Anda dapat melakukan chmodapa pun yang Anda suka.

Roi Danton
sumber
chgrp Users *hanya akan mengubah semua file dan folder di $PWD. Untuk mengubah semua subfolder / file juga sebagai $ PWD, gunakan opsi -R:chgrp -R users *
adam
4

Saya telah menemukan peretasan khusus Cygwin untuk mengatasi ini untuk saat ini.

Versi singkat:
Cukup buat grup windows kosong baru, gunakan chgrp untuk mengubah grup id_rsa untuk ini, dan kemudian menolak izin baca / tulis untuk grup.

Versi panjang:
Tekan tombol super dan ketik lusrmgr.msc . Gunakan manajer ini untuk membuat grup kosong, yang disebut say EMPTY_GROUP

Sekarang kita perlu memberi tahu Cygwin tentang grup baru ini.

mkgroup > /etc/group

Selanjutnya kita perbarui grup id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Akhirnya, cari id_rsa di Windows Explorer, dan di bawah tab Security di Properties, tolak izin baca / tulis, dan Anda harus melakukannya dengan baik.

Saya tidak yakin bagaimana Cygwin dapat menangani ini dalam 7 tetapi tidak 8, tetapi masalahnya tampaknya berasal dari kelompok file id_rsa menjadi Tidak Ada, grup yang selalu memiliki akses baca / tulis penuh.

Juga, ini tampaknya hanya bekerja untuk ssh.exe yang datang dengan Cygwin, jadi jika Anda ingin menggunakan katakan ssh dengan git, timpa ssh.exe dari nampan di git Anda instal dengan yang dari folder bin di instal Cywgin Anda .

Daniel Stiner
sumber
2

Menangkan 8 + Cygwin

Saya di Windows 8, 64bit. Melakukan hal berikut memecahkannya untuk saya:

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

Di cygwin, ketik perintah ini:

  • Atur grup yang benar ke folder rumah:

    chgrp -Rv HomeUsers /home

  • Tetapkan izin yang benar untuk file identitas ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: jawaban yang diterima sebelumnya sudah usang. Nama grup adalah "Pengguna Rumah", bukan "Pengguna", belum dapat berkomentar.

Julien Ricard
sumber
1

Saya ingin mengomentari masalah itu juga. Saya mengalami masalah serupa pada PC Windows 7 saya menggunakan git melalui Cygwin.

Ketika mencoba untuk mendorong perubahan dari repositori git lokal saya ke repositori jarak jauh (menggunakan ssh dan keypair untuk otentikasi), git melemparkan pesan bahwa izin 0660 terlalu terbuka untuk file

~ / .ssh / id_rsa.

Tentu saja tidak masalah bagi ssh-agent untuk menolak kunci privat yang terbuka ini.

Jadi saya mencoba hal-hal yang disebutkan dalam utas ini dan utas lainnya yang terkait dengan kepemilikan dan pola rwx pada file dan folder ~ / .ssh

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

Namun, kesalahan yang sama terlempar berulang kali.

Untuk beberapa alasan perlu untuk membunuh proses ssh-agent di cygwin dan menjalankan perintah berikut di bourne lagi shell (bash).

eval `ssh-agent -s`

Jangan lupa untuk menambahkan identitas yang diinginkan ke ssh-agent, mis

ssh-add ~/.ssh/id_rsa

Lalu saya ulangi perintah push yang valid seperti

git push origin master

dan semuanya bekerja dengan baik.

Michael Huelsen
sumber
0

Untuk memperluas jawaban Roi Danton . Jika Anda telah menginstal Windows 8 di atas instalasi Windows lama Anda, dan direktori cygwin Anda sebelumnya masih berlaku, Anda harus melakukan beberapa hal lain terlebih dahulu.

Pertama, Ambil Kepemilikan Direktori / File Cygwin

Akan ada beberapa akun pengguna yang terkait dengan direktori dan subdirektori / file yang terlihat seperti S-1-2-34-1234567890-1234567890-1234567890-123

Akun pengguna

Hapus ini dan ambil kepemilikan dengan akun pengguna Anda sendiri.

  1. Akses Propertiesdirektori cygwin
  2. Klik Advancedpada Securitytab
  3. Changepemilik untuk diri sendiri. Anda dapat mengetikkan nama depan atau alamat email terkait Anda
  4. Remove pengguna yang tidak dikenal dari daftar
  5. Klik Enable Inheritance
  6. Periksa `Ganti semua entri izin objek anak dengan entri izin yang dapat diwarisi dari objek ini
  7. Klik OKdi bagian bawah dan kemudian Yeske kotak dialog.

Kotak Dialog Keamanan Windows

Kemudian, Di Cygwin, Ubah Kelompok Pengguna Dari Semua File Kunci

Dari jawaban Roi Danton :

Selama Instalasi cygwin, semua file tidak termasuk grup. Anda dapat memeriksa ini dengan melakukan ls -al.

  1. Buka Cygwin dan arahkan ke .sshdirektori -cd ~/.ssh
  2. Jalankan chgrp Users *- ini akan memungkinkan Anda untuk chmodfile dengan benar.
  3. Akhirnya, jalankan chmod 400 *. 600 juga akan berfungsi.

Tes Untuk Melihat Jika Berhasil

Cukup ssh ke server pilihan Anda. Dalam kasus saya, Bitbucket -nya .

Hasil yang bagus:

$ ssh [email protected]
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.

Hasil buruk:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).
Simon Hartcher
sumber
2
Dengan OpenSSH untuk Windows (bukan cygwin) saya mendapatkan chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": grup yang tidak valid `Pengguna '
Jonathan
0
  1. id_rsa -> Klik kanan -> Properti -> Keamanan -> Edit
  2. Hapus semua grup dan pengguna (Jangan tekan OK atau Terapkan)
  3. Tambah -> Masukkan nama pengguna Anda saat ini -> Periksa Nama
  4. Izinkan "Kontrol Penuh"
  5. Menerapkan

(Windows 10 Pro)

optimiertes
sumber