Izin Kunci Pribadi SSH menggunakan Git GUI atau ssh-keygen terlalu terbuka

244

Baru-baru ini saya tidak dapat mengkloning atau mendorong ke github, dan saya mencoba untuk menemukan akar masalahnya.

Ini ada di windows

Saya memiliki cygwin + git dan juga msysgit.

Msysgit diinstal dengan opsi berikut:

  • OpenSSH
  • Gunakan Git dari Windows Command Prompt

Itu memberi saya 4 lingkungan untuk mencoba menggunakan git di:

  • Windows cmd prompt
  • Powershell
  • Git Bash
  • Cygwin

Entah bagaimana saya telah berhasil menempatkan diri pada posisi di mana ketika saya mencoba mengkloning repositori menggunakan msysgit, cmd.exe, atau Powershell, saya mendapatkan kesalahan berikut:

> 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

Ini menggunakan folder .ssh di folder c: \ users \ ben \, yang digunakan oleh msysgit. Saya menduga cygwin berfungsi karena folder .ssh terletak di tempat lain, tetapi saya tidak yakin mengapa

Di Git Bash, saya memeriksa izin:

$ ls -l -a ~/.ssh

Yang memberi saya:

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

Izin ini tampaknya terlalu santai. Bagaimana mereka bisa seperti ini, saya tidak tahu.

Saya dapat mencoba mengubahnya ...

$ chmod -v -R 600 ~/.ssh

yang memberitahu saya:

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-------)

Tetapi tampaknya tidak berpengaruh. Saya masih mendapatkan kesalahan yang sama, dan melakukan

$ ls -l -a ~/.ssh

menghasilkan izin yang sama seperti sebelumnya.

MEMPERBARUI:

Saya mencoba untuk memperbaiki izin untuk file-file di cygwin, dan cygwin melaporkan izin mereka dengan benar, gitbash tidak: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

Ada ide tentang bagaimana saya benar-benar dapat memperbaiki izin ini?

Ben Scheirman
sumber
1
Anda mungkin ingin memberi tahu kami apa sistem file asli yang digunakan C: \ Users \ Ben \. Tampaknya filesystem tersebut tidak mendukung izin nyata, atau pemetaan antara shell dan filesystem tidak berfungsi dengan baik. Bisakah Anda mengubah izin melalui ACL Windows?
Chen Levy
Saya menggunakan Windows 7. Saya bisa mengubah izin untuk itu, tetapi seharusnya seperti apa? Semua dokumen github / ssh mengatakan Anda perlu 0600, tetapi saya tidak tahu apa artinya itu di Windows ACL.
Ben Scheirman
2
Uh ... sedikit sidenote di sini, tetapi chmod-ing direktori ke 600 adalah ide yang buruk. Direktori (dan file yang dapat dieksekusi) selalu satu digit lebih tinggi (700 bukan 600, 755 bukan 644). Melakukannya pada direktori akan membuatnya tidak dapat didaftar. Lihat dartmouth.edu/~rc/help/faq/permissions.html untuk penjelasan lebih rinci.
Mark Embling
Apakah Anda menentang menggunakan Putty?
Greg Bacon
jika itu memperbaiki masalah saya maka tidak, tapi saya ingin tahu mengapa pengaturan ini tidak berhasil untuk saya.
Ben Scheirman

Jawaban:

361

Anda mengubah izin di seluruh direktori, yang saya setujui dengan Splash adalah ide yang buruk. Jika Anda dapat mengingat apa izin asli untuk direktori tersebut, saya akan mencoba mengaturnya kembali lalu melakukan yang berikut

cd ~/.ssh
chmod 700 id_rsa

di dalam folder .ssh. Itu akan mengatur file id_rsa ke rwx (baca, tulis, jalankan) hanya untuk pemilik (Anda), dan nol akses untuk semua orang.

Jika Anda tidak dapat mengingat apa pengaturan aslinya, tambahkan pengguna baru dan buat satu set kunci SSH untuk pengguna itu, sehingga membuat folder .ssh baru yang akan memiliki izin default. Anda dapat menggunakan folder .ssh baru sebagai referensi untuk izin untuk mengatur ulang folder dan file .ssh Anda.

Jika itu tidak berhasil, saya akan mencoba melakukan uninstall msysgit, menghapus SEMUA folder .ssh di komputer (hanya untuk ukuran yang aman), kemudian menginstal ulang msysgit dengan pengaturan yang Anda inginkan dan coba mulai lagi dari awal (walaupun saya pikir Anda memberi tahu saya Anda sudah mencoba ini).

Diedit: Juga baru saja menemukan tautan ini melalui Google - Memperbaiki "PERINGATAN: FILE KUNCI PRIVATE YANG TIDAK DIPROTEKSI!" di Linux Sementara itu ditargetkan di linux, itu mungkin membantu karena kita berbicara izin liunx dan semacamnya.

Koby
sumber
2
Jawaban ini secara khusus berlaku untuk menggunakan cygwin atau msysgit (karena msysgit menggunakan subset cygwin atau mungkin mingw32). Masalahnya adalah izin pada file tersebut. Git suka bekerja dengan (kebanyakan) izin linux (mungkin produk sampingan dari target audiensnya). Menggunakan git.exe di shell Winodws diketahui memiliki masalah, saya akan menyarankan tetap dengan msysgit. Setidaknya sampai GitSharp berfungsi penuh.
Koby
2
Ini tidak bekerja pada windows 8 dan Jan '14 saya menginstal cygwin setelah chmod 700, itu menunjukkan file sebagai rwxrwx ---. Izin grup diatur ke apa pun yang saya atur izin pengguna dan saya tidak bisa menggunakan kunci saya.
Dean Hiller
1
@DeanHiller, izin 700 seharusnya terlihat seperti -rwx------. Jadi apa yang Anda tampilkan tidak benar jika Anda telah melakukan perintah chmod dengan benar.
Koby
5
@Koby tidak, itu adalah bug dengan work aroudn ... perlu menggunakan chgrp -R Users ~ / .ssh dan kemudian chmod sekarang berfungsi dan benar-benar mengubah izin dengan benar ..... bug yang dikenal yang akhirnya saya temukan di pos lainnya.
Dean Hiller
2
Saya dapat memverifikasi bahwa ada beberapa jenis bug di GitBash untuk Windows di mana izin yang benar TIDAK BISA diatur dengan chmod, atau izin tidak dibaca dengan benar. chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed
74

Ada bug dengan chmod cygwin, silakan merujuk ke:

/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
kittikun
sumber
Untuk alasan apa pun, pemetaan dari izin Windows ke izin cygwin / * nix agak kabur. Meskipun saya menghapus izin semua pengguna lain di sisi Windows, cygwin masih menerapkan izin untuk saya, pengguna , ke grup lain bernama None. (Saya kira ini adalah prosedur standar ketika sebuah grup belum didefinisikan secara eksplisit). Perubahan ini menjadi grup eksplisit yang Usersseharusnya memungkinkan cygwin untuk memisahkan izin, dan saya akhirnya dapat menetapkan 600 alih-alih 660 otomatis.
t-mart
3
Ini adalah jawaban yang benar sebenarnya. Yang terpilih sebagai jawaban yang benar - saya pikir orang-orang yang memilih itu adalah pengguna linux dan tidak menyadari bahwa ia menjalankan perintah dengan benar. Saya memiliki masalah yang sama dengan cygwin hari ini. Terima kasih!
michaelday
Sebelum menerapkan solusi ini, ketika saya menggunakan chmod 600git akan mengeluh bahwa izin saya masih 0660. Memperbaiki kepemilikan grup membuat chown berlaku dengan benar.
Guilherme Rodrigues
1
Saya memperbarui Cygwin dan berhasil. Mereka pasti telah memperbaiki bug.
Duncan Calvert
17

Untuk sistem * nix, perbaikan yang jelas adalah chmod 600 id_rsaofc, tetapi pada windows 7 saya harus membenturkan kepala ke dinding untuk sementara waktu, tetapi kemudian saya menemukan solusi ajaib:

pergi ke Komputer Saya / Klik Kanan / Properti / Pengaturan Sistem Lanjut / Variabel Lingkungan dan HAPUS variabel (mungkin dari lingkungan sistem dan pengguna):

CYGWIN

Pada dasarnya, ini cacat pada mingw32 yang digunakan oleh git windows binary, selalu melihat semua file 644 dan semua folder. Menghapus variabel lingkungan tidak mengubah perilaku itu, tetapi tampaknya memberitahu ssh.exe untuk mengabaikan masalah tersebut. Jika Anda memang mengatur izin yang tepat untuk id_rsa Anda melalui pengaturan keamanan penjelajah (benar-benar tidak perlu memiliki pengguna lain di sana selain Anda sendiri, bukan "semua orang", bukan "administrator", bukan "administrator", bukan "sistem". Tidak ada, hanya Anda) , kamu akan tetap aman.

Sekarang, mengapa MingW32, sistem yang berbeda dari cygwin, akan membuat setiap penggunaan variabel lingkungan Cygwin, adalah di luar saya. Tampak seperti bug bagi saya.

Tuncay Göncüoğlu
sumber
3
Ini tidak berhasil untuk saya. Saya masih mendapatkan pesan "FILE KEY PRIVATE KEY FILE". Hanya ingin memberi tahu Anda seandainya ada orang lain yang mengikuti utas ini dengan hasil yang serupa.
Luc
Bekerja untukku. Ini asinine sekalipun. Saya bahkan tidak menggunakan Cygwin lagi. Juga, bagaimana Anda mengetahui hal ini?
gamut
13

Saya menggunakan XP dan ini memungkinkan Git Bash untuk berkomunikasi dengan Github (setelah frustrasi):

  1. salin c:\cygwin\bin\cyg*(~ 50 file) kec:\Program Files\Git\bin\
  2. salin c:\cygwin\bin\ssh.exeke c:\Program Files\Git\bin\(menimpa)
  3. Buat file yang c:\Documents and Settings\<username>\.ssh\configberisi:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (opsional) Gunakan ssh -v git@githubuntuk melihat koneksi debugged.

  5. Coba desak!

Latar Belakang: Masalah umum adalah kombinasi dari keduanya:

  • BUG: mingw32 melihat semua file sebagai 644 (lainnya / dapat dibaca grup), dan tidak ada yang saya coba di mingw32, cygwin, atau Windows yang bisa memperbaikinya.
  • versi SSH mingw32 tidak akan memungkinkan untuk kunci privat (umumnya kebijakan yang baik di server).
Steve Clay
sumber
Kelip tidak perlu membuat file c:\Documents and Settings\<username>\.ssh\configkarena Anda telah diganti c:\Program Files\Git\bin\ssh.exe dengan c:\cygwin\bin\ssh.exe. Baik ?
爱国者
Setuju dengan komentar "sangat frustrasi". Untuk gitolite, saya mengikuti langkah-langkah ini, menyalin cygwin / bin / cyg * ke dir Git saya (PortableGit - atau - Program Files / Git), dan menemukan saya kemudian dapat menggunakan git dari Git-Bash, tetapi bukan cygwin bash. Menambahkan direktori PortableGit dan Cygwin bin ke PATH saya juga bekerja dengan keberhasilan yang terbatas ... tapi saya masih harus memindahkan PortableGit / bin / ssh.exe {,. Bak} sehingga tidak digunakan secara tidak sengaja (meskipun itu adalah sama seperti c: /cygwin/bin/ssh.exe). Pada dasarnya ssh.exe perlu dijalankan dari direktori cygwin karena dependensi lain yang tidak disalin.
michael
Meskipun ini bekerja untuk saya sekarang, di sebelah coba akan hanya menambahkan kedua Git dan Cygwin ke PATH, dan memindahkan ssh.exe Git keluar dari jalan sehingga ssh.exe cygwin digunakan (dari direktori bin cygwin).
michael
Tambahkan LogLevel DEBUGke file .ssh \ config untuk mendapatkan hasil debug dari proses ssh.exe yang dimulai oleh git.exe.
knb
Terima kasih - solusi ini berhasil untuk saya! Secara khusus, dari c: \ cygwin \ bin \ Saya menyalin ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll, dan cygz.dll ke C: \ Program Files \ Git \ bin \.
nexus-bytes
10

Untuk Windows 7 menggunakan Git yang ditemukan di sini (menggunakan MinGW, bukan Cygwin):

  1. Di windows explorer, klik kanan file id_rsa Anda dan pilih Properties
  2. Pilih tab Keamanan dan klik Edit ...
  3. Centang kotak Tolak di sebelah Kontrol Penuh untuk semua grup KECUALI Administrator
  4. Coba lagi perintah Git Anda
Brett Pennings
sumber
1
Ini untuk saya, tetapi sekarang saya memiliki masalah baru yang ssh tidak suka kata sandi saya, kata sandi yang saya berikan file kunci saya.
Jason Southwell
7

OK jadi di sini adalah bagaimana saya benar-benar memaksa perubahan pada file Windows saya mengenai izin itu sendiri di Win7: Temukan kunci ssh Anda di windows explorer: C: \ Users [your_user_name_here] .ssh \ id_rsa

Klik kanan pada file> Properti> tab Keamanan> Tombol Tingkat Lanjut> Ubah izin

Sekarang hapus semua orang yang sebenarnya bukan nama pengguna Anda. Ini termasuk pengguna Administrator dan Sistem. Pada titik ini Anda mungkin mendapatkan dialog tentang mewarisi izin - pilih opsi yang TIDAK DIwarisi- karena kami hanya ingin mengubah file ini.

Klik OK dan simpan sampai selesai.

Saya berjuang dengan ini selama berhari-hari karena windows saya tidak akan mengubah izin file dari baris perintah. Dengan cara ini, ini SEBENARNYA dilakukan - alih-alih menggunakan pekerjaan yang mengasyikkan yang membuat konsekuensi yang aneh.

diannaL
sumber
6

Mengubah izin file dari Properti, menonaktifkan warisan dan menjalankan chmod 400 tidak berhasil untuk saya. Izin untuk file kunci pribadi saya adalah:

-r - r ----- 1 alex Tidak ada 1766 8 Mar 13:04 /home/alex/.ssh/id_rsa

Kemudian saya perhatikan bahwa grup tersebut adalah None, jadi saya hanya berlari

chown alex: Administrator ~ / .ssh / id_rsa

Lalu saya bisa berhasil mengubah izin dengan chmod 400, dan menjalankan git push.

alex.m
sumber
4

UNTUK PENGGUNA MAC:

Ubah pengaturan file pasangan kunci Anda dengan mengetik ini di terminal:

chmod og-r *filename.pem*

(pastikan Anda berada di direktori yang benar, atau path nama file dalam perintah dengan benar).

Andrew
sumber
3

Saya menyelesaikannya dengan menjalankan:

chmod 400 ~/.ssh/id_rsa

Saya berharap bisa membantu. Semoga berhasil.

CristianOrellanaBak
sumber
1
Mengubah izin menjadi 400 seperti yang disebutkan Cristian, itu akan lebih aman.
SylvesterAbreuLoreto
2

Setelah mengatasi masalah baru-baru ini dan ini menjadi salah satu hasil google teratas saya pikir saya akan ikut serta dengan pekerjaan sederhana yang didokumentasikan dalam diskusi di sini: http://code.google.com/p/msysgit/issues/detail?id = 261 # c40

Cukup melibatkan menimpa mysys ssh.exe dengan cygwin ssh.exe Anda

chriskhan
sumber
2

Saya memiliki masalah yang sama pada Windows XP baru-baru ini. Saya mencoba chmod 700 pada file ~ / .ssh / id_rsa saya tetapi sepertinya tidak berhasil. Ketika saya melihat izin menggunakan ls-l pada ~ / .ssh / id_rsa saya bisa melihat bahwa izin efektif saya masih 644.

Lalu saya ingat bahwa izin windows juga mewarisi izin dari folder, dan folder itu masih terbuka untuk semua orang. Sebuah solusi bisa dengan mengatur izin untuk folder juga, tapi saya pikir cara yang lebih baik adalah dengan memberitahu sistem untuk mengabaikan warisan untuk file ini. Ini dapat dilakukan dengan menggunakan opsi lanjutan pada tab keamanan di properti file, dan menghapus centang "mewarisi dari izin orang tua ..."

Ini mungkin bermanfaat bagi orang lain dengan masalah yang sama.

daramarak
sumber
1

Saya bermain sekarang dengan Git 1.6.5, dan saya tidak bisa meniru pengaturan Anda:

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 [email protected]: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 [email protected]
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 juga tidak mengubah izin file untuk kunci saya.

Lingkungan Hidup:

  • Windows Server 2008 SP2 pada NTFS
  • pengguna: administrator
  • vars lingkungan:
    • PLINK_PROTOCOL = ssh
    • HOME = / c / profil / home

Pembaruan: Git 1.6.5.1 juga berfungsi.

alexandrul
sumber
menarik. Sepertinya Anda menggunakan opsi dempul?
Ben Scheirman
1

Ini adalah masalah yang terutama terlibat pada Windows, di mana tidak cukup hanya chmod file dengan benar. Anda harus mengatur lingkungan Anda.

Di Windows, ini berhasil bagi saya:

  1. Instal cygwin.

  2. Ganti ssh.exe msysgit dengan ssh.exe cygwin.

  3. Menggunakan cygwin bash, chmod 600 file kunci pribadi, yang merupakan "id_rsa" untuk saya.

  4. Jika masih tidak berfungsi, buka Control Panel -> System Properties -> Advanced -> Variabel Lingkungan dan tambahkan variabel lingkungan berikut. Kemudian ulangi langkah 3.

    Nilai Variabel
    CYGWIN sbmntsec

Michael Bosworth
sumber
1

Saya dapat memperbaiki ini dengan melakukan dua hal, meskipun Anda mungkin tidak perlu melakukan langkah 1.

  1. salin dari cygwin ssh.exe dan semua cyg * .dll ke direktori bin Git (ini mungkin tidak diperlukan tetapi ini adalah langkah yang saya ambil tetapi ini saja tidak memperbaiki keadaan)

  2. ikuti langkah-langkah dari: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    Saya menambahkan beberapa detail ke file ~ / .ssh / config saya:

Host heroku.com
Hostname heroku.com
Port 22
IdentitiesHanya ya
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive yes
Pengguna brandon

Saya harus menggunakan Pengguna sebagai alamat email saya untuk heroku.com Catatan: ini berarti Anda harus membuat kunci, saya mengikuti ini untuk membuat kunci dan ketika diminta untuk nama kunci, pastikan untuk menentukan id_heroku http: / /help.github.com/win-set-up-git/

  1. kemudian tambahkan kunci: kunci
    heroku: tambahkan ~ / .ssh / id_heroku.pub
Christy Hotney
sumber
1

Apa yang melakukan trik untuk saya adalah untuk memperbarui CygWin variabel lingkungan dengan: " tty nodosfilewarning ". Bahkan tidak perlu chmod kunci.

tohokami
sumber
0

Bukan jawaban langsung untuk pertanyaan utama, tetapi pada pertanyaan Anda tentang cara kerja folder cygwin ... Sebagai aturan umum, cygwin menempatkan semua file "Anda" di bawah equiv c: \ cygwin \ home \ username. Ini memperlakukan folder itu untuk pengaturan spesifik pengguna apa pun alih-alih direktori pengguna Windows.

J Wynia
sumber
0

Kecuali ada alasan bahwa Anda ingin mempertahankan pasangan kunci privat / publik (id_rsa / id_rsa.pub), atau menikmati membenturkan kepala Anda di dinding, saya akan merekomendasikan hanya membuat ulang mereka dan memperbarui kunci publik Anda di github.

Mulailah dengan membuat salinan cadangan dari direktori ~ / .ssh Anda.

Masukkan yang berikut ini dan jawab "y" apakah Anda ingin menulis lebih dari file yang ada.

ssh-keygen -t rsa

Salin konten kunci publik ke papan klip Anda. (Di bawah ini adalah bagaimana Anda harus melakukannya di Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Buka akun Anda di github dan tambahkan kunci ini.

Name: My new public key
Key: <PASTE>

Keluar dari terminal Anda dan mulai kembali yang baru.

Jika Anda mendapatkan pesan kesalahan yang tidak masuk akal seperti "Masukkan kata sandi Anda" untuk kunci publik Anda ketika Anda tidak pernah memasukkannya, pertimbangkan teknik memulai kembali ini. Seperti yang Anda lihat di atas, itu tidak rumit.

l3x
sumber
0

Saya tidak pernah berhasil membuat git bekerja sepenuhnya di Powershell. Tetapi di shell bit git saya tidak memiliki masalah terkait izin, dan saya tidak perlu mengatur chmod dll ... Setelah menambahkan ssh ke Github saya sudah bangun dan berjalan.

Sam Kenny
sumber
0

Ketik terminal:

chmod -Rf 700 ~/.ssh/

Dan coba lagi.

João Paulo Cercal
sumber
0

Apakah Anda menyalin file kunci dari komputer lain?

Saya baru saja membuat id_rsafile di mesin klien kemudian menempelkan kunci yang saya inginkan. Tidak ada masalah izin. Tidak ada yang diatur. Itu hanya berhasil. Ini juga berfungsi jika Anda menggunakan PuTTYgen untuk membuat kunci pribadi.

Mungkin ada masalah grup tersembunyi jika Anda menyalinnya dari komputer lain.

Diuji pada dua mesin Windows 8.1. Menggunakan Sublime Text 3 untuk menyalin dan menempelkan kunci pribadi. Menggunakan Git Bash (Git-1.9.4-preview20140611).

PhilT
sumber
0

Setelah memutakhirkan instalasi Cygwin saya ke versi sekitar Februari 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin), saya tiba-tiba mendapat UNPROTECTED PRIVATE KEY FILEperingatan.

Saya memperbaiki masalah ini setelah menjalankan perintah berikut:

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

( jawaban lain untuk pertanyaan lain memberi lebih banyak konteks)

Abdull
sumber
0

@oby menjawab tidak bekerja untuk saya, jadi saya membuat sedikit perubahan.

cd ~/.ssh
chmod 700 id_rsa.pub

Ini berfungsi baik untuk saya di Mac.

Han Pengbo
sumber
0

Saya memiliki masalah yang sama pada Windows 10 di mana saya mencoba SSH ke dalam kotak Vagrant. Ini seperti bug dalam versi OpenSSH lama. Apa yang berhasil untuk saya:

  1. Instal OpenSSH terbaru dari http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Catat ".exe" jika Anda menggunakan Powershell)

Anda mungkin melihat sesuatu seperti:

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

Perhatikan bahwa dalam contoh di atas OpenSSH terbaru adalah yang kedua di jalur sehingga tidak akan dijalankan.

Untuk mengubah urutan:

  1. Klik kanan tombol Windows -> Pengaturan -> "Edit Variabel Lingkungan Sistem"
  2. Pada tab "Maju" klik "Variabel Lingkungan ..."
  3. Di bawah System Variables, edit "Path".
  4. Pilih "C: \ Program Files \ OpenSSH \ bin" dan "Move Up" sehingga muncul di atas.
  5. Klik OK
  6. Mulai ulang konsol Anda agar variabel lingkungan baru dapat berlaku.
Jasper Citi
sumber
0

Sistem saya agak berantakan dengan bash / cygwin / git / msysgit / mungkin-lebih ...

chmodtidak berpengaruh pada kunci, atau configfile.

Kemudian saya memutuskan untuk mendekatinya dari Windows, yang berhasil.

  1. Klik kanan file yang izinnya perlu diperbaiki.
  2. Pilih Properties.
  3. Pilih Securitytab.
  4. Klik di Advanceddekat bagian bawah.
  5. Klik Change, di sebelah Ownerdekat bagian atas.
  6. Ketik "My-Awesome-Username" (jelas mengubahnya ke nama pengguna Windows Anda saat ini), dan klik Check Names, lalu OK.
  7. Di bawah Permission entries:, sorot setiap pengguna yang bukan "My-Awesome-Username", dan pilih Remove. Ulangi ini sampai "My-Awesome-Username" adalah satu-satunya yang tersisa.
  8. Pilih "My-Awesome-Username", dan klik di Editbawah ini.
  9. Pastikan Type:di bagian atas diatur ke Allow, dan kemudian centang kotak centang di sebelah Full control.
  10. Hit OK, Apply, OK, OK.

  11. Cobalah lagi sekarang ...

Tampaknya kadang-kadang bash-bash tidak dapat mengontrol kepemilikan file. Ini sangat aneh, karena dihasilkan dari skrip mock-bash. Sosok pergi.

Jack_Hu
sumber
0

Tak satu pun dari solusi yang disarankan di sini (chmod / chgrp / setfacl / windows perms) bekerja untuk saya dengan msys64 pada Windows 7 perusahaan VM. Pada akhirnya saya mengatasi masalah dengan menggunakan agen ssh dengan kunci yang disediakan pada stdin. Menambahkan ini ke saya .bash_profilemenjadikannya default untuk login saya:

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

Sekarang saya bisa melakukan git push and pull dengan remote ssh.

Andy Brown
sumber