Git GUI veya ssh-keygen kullanan SSH Özel Anahtar İzinleri çok açık


244

Son zamanlarda github'u klonlayamadım veya zorlayamadım ve kök nedeni bulmaya çalışıyorum.

Bu pencerelerde

Ben msggit yanı sıra cygwin + git var.

Msysgit aşağıdaki seçeneklerle kuruldu:

  • OpenSSH
  • Windows Komut İsteminden Git'i kullanma

Bu bana git'i kullanmaya çalışmam için 4 ortam sağlıyor:

  • Windows cmd istemi
  • Güç kalkanı
  • Git Bash
  • Cygwin

Her nasılsa kendimi msysgit, cmd.exe veya Powershell kullanarak bir havuzu klonlamaya çalıştığımda aşağıdaki hatayı aldım:

> 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

Bu, msysgit tarafından kullanılan c: \ users \ ben \ klasörümdeki .ssh klasörünü kullanıyor. .Ssh klasörü başka bir yerde bulunduğundan cygwin'in çalıştığından şüpheleniyorum, ancak neden olduğundan emin değilim

Git Bash'te izinleri kontrol ediyorum:

$ ls -l -a ~/.ssh

Hangi bana verir:

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

Bu izinler çok rahat. Bu yolu nasıl aldıklarını bilmiyorum.

Onları değiştirmeyi deneyebilirim ...

$ chmod -v -R 600 ~/.ssh

bana şunu söyler:

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

Ama bunun bir etkisi yok gibi görünüyor. Hala aynı hatayı alıyorum ve yapıyorum

$ ls -l -a ~/.ssh

önceki izinlerin aynısını verir.

GÜNCELLEME:

Ben cygwin bu dosyalara izinleri düzeltmek için çalıştı ve cygwin izinlerini doğru rapor, gitbash yapmaz: alt metin http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

Bu izinleri gerçekten nasıl düzeltebileceğim hakkında bir fikrin var mı?


1
Bize C: \ Users \ Ben \ 'nin kullandığı yerel dosya sisteminin ne olduğunu söylemek isteyebilirsiniz. Dosya sisteminin gerçek izinleri desteklemediği veya kabuk ve dosya sistemi arasındaki eşleşmelerin düzgün çalışmadığı anlaşılıyor. İzinleri Windows ACL'leriyle değiştirebilir misiniz?
Chen Levy

Windows 7 kullanıyorum. İzinlerini değiştirebilirim, ama ne olması gerekiyor? Tüm github / ssh belgeleri 0600'e ihtiyacınız olduğunu söylüyor, ancak Windows ACL'lerinde bunun ne anlama geldiğini bilmiyorum.
Ben Scheirman

2
Uh ... burada bir parça biraz, ama bir dizini 600'e çevirmek kötü bir fikir. Dizinler (ve yürütülebilir dosyalar) her zaman bir basamak daha yüksektir (700 değil 600, 755 644 değil). Bir dizinde bunu yapmak kararsız hale getirecektir. Daha ayrıntılı açıklamalar için dartmouth.edu/~rc/help/faq/permissions.html adresine bakın .
Mark Embling

PuTTY kullanmaya karşı mısınız?
Greg Bacon

sorunumu giderirse hayır, ancak bu kurulumun neden işe yaramadığını merak ediyorum.
Ben Scheirman

Yanıtlar:


361

Splash ile aynı fikirde olduğum tüm dizinde izinleri değiştirdiniz, kötü bir fikir. Dizin için orijinal izinlerin ne olduğunu hatırlayabiliyorsanız, bunları buna geri ayarlamaya çalışacağım ve sonra aşağıdakileri yapacağım

cd ~/.ssh
chmod 700 id_rsa

klasöründe .ssh. Bu, id_rsa dosyasını yalnızca sahip (siz) için rwx (okuma, yazma, yürütme) ve diğer herkes için sıfır erişim olarak ayarlar.

Orijinal ayarların ne olduğunu hatırlayamıyorsanız, yeni bir kullanıcı ekleyin ve bu kullanıcı için bir grup SSH anahtarı oluşturun, böylece varsayılan izinlere sahip yeni bir .ssh klasörü oluşturun. Bu yeni .ssh klasörünü, .ssh klasörünüzü ve dosyalarınızı sıfırlamak için izin başvurusu olarak kullanabilirsiniz.

Bu işe yaramazsa, msysgit'i kaldırmayı, bilgisayardaki TÜM .ssh klasörlerini silmeyi (sadece güvenli önlem için), ardından msysgit'i istediğiniz ayarlarla yeniden yüklemeyi ve tamamen baştan başlamayı denerdim (bana söylediğinizi düşünüyorum bunu zaten denediniz).

Düzenlendi: Bu bağlantıyı Google üzerinden de buldum - "UYARI: KONTROL EDİLMEMİŞ ÖZEL ANAHTAR DOSYA!" Linux'ta Linux'u hedeflemiş olsa da, liunx izinlerinden ve benzeri şeylerden bahsettiğimiz için yardımcı olabilir.


2
Bu cevap özellikle cygwin veya msysgit kullanımı için geçerlidir (msysgit bir cygwin veya muhtemelen mingw32 alt kümesi kullandığından). Sorun dosyadaki izindir. Git (çoğunlukla) linux izinleriyle (muhtemelen hedef kitlesinin bir ürünü olarak) çalışmayı sever. Winodws kabuğu içinde git.exe kullanarak sorunları olduğu bilinmektedir, msysgit ile yapışmasını tavsiye ederim. En azından GitSharp tamamen çalışana kadar.
Koby

2
Bu Windows 8 ve Cymwin benim Jan '14 yüklemesi chmod 700 sonra olduğu gibi çalışmıyor, dosyayı rwxrwx --- olarak gösteriyor. Grup izinlerini, kullanıcı izinlerini ayarladığım her şeye ayarlanacak ve anahtarlarımı kullanamıyorum.
Dean Hiller

1
@DeanHiller, 700 iznine benzemelidir -rwx------. Bu nedenle, chmod komutunu doğru şekilde yaptıysanız gösterdiğiniz doğru değildir.
Koby

5
@Koby hayır, bir çalışma aroudn ile bir hataydı ... chgrp -R Kullanıcıları ~ / .ssh kullanmanız gerekiyor ve sonra chmod şimdi çalışıyor ve aslında izinleri doğru değiştirir ..... sonunda bulduğum bilinen bir hata başka bir gönderi.
Dean Hiller

2
GitBash for Windows'da doğru izinlerin chmod ile ayarlanamadığı veya izinlerin doğru okunamadığı bir tür hata olduğunu doğrulayabilirim. chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed

74

Cygwin'in chmod'unda bir hata var, lütfen bakınız:

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

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

Hangi nedenle olursa olsun, Windows izinlerinden cygwin / * nix benzeri izinlere eşleme biraz bulanıktır. Windows tarafındaki tüm diğer kullanıcıların izinlerini kaldırmış olsam da, cygwin yine de benim için kullanıcı için izinleri adlı başka bir gruba uyguladı None. (Bir grup açıkça tanımlanmadığında bu standart prosedürdür) .Bu açık bir gruba yapılan değişiklik, Userssözde cygwin'in izinleri ayırmasına izin verdi ve sonunda otomatik bir 660 yerine 600 ayarlayabilirim.
t-mart

3
Bu gerçek doğru cevaptır. Doğru cevap olarak oylanan - Bence oy kullanan insanlar linux kullanıcılarıydı ve komutu doğru bir şekilde yerine getirdiğini fark etmediler. Bugün Cygwin ile aynı problemi yaşadım. Teşekkürler!
michaelday

Bu çözümü uygulamadan önce git'i kullandığımda chmod 600izinlerimin hâlâ olduğundan şikayetçiydim 0660. Grup sahipliğini düzeltmek chown'ın doğru şekilde uygulanmasını sağlar.
Guilherme Rodrigues

1
Cygwin'i güncelledim ve işe yaradı. Hatayı düzeltmiş olmalılar.
Duncan Calvert

17

* Nix sistemleri için bariz düzeltme chmod 600 id_rsa ofc'dir, ancak Windows 7'de bir süre kafama duvara çarpmak zorunda kaldım, ama sonra sihirli çözümü buldum:

Bilgisayarım / Sağ Tıklama / Özellikler / Gelişmiş Sistem Ayarları / Ortam Değişkenleri bölümüne gidin ve değişkeni SİL (muhtemelen hem sistem hem de kullanıcı ortamından):

Cygwin

Temel olarak, git windows binary tarafından kullanılan mingw32'deki bir kusur, her zaman tüm dosyaları 644 ve tüm klasörleri 755 görüyor. Ortam değişkeninin kaldırılması bu davranışı değiştirmez, ancak görünüşe göre ssh.exe'ye sorunu yok saymasını söyler. Kaşifler güvenlik ayarları aracılığıyla id_rsa'nıza uygun izinler ayarlarsanız (gerçekten "sistem" değil, "yöneticiler" değil, "herkes" değil, kendi kullanıcılarınızdan başka bir kullanıcının bulunmasına gerek yoktur. Hiçbiri. Sadece siz) , hala güvende olacaksın.

Şimdi, cygwin'den farklı bir sistem olan mingw32'nin CYGWIN ortam değişkenini herhangi bir şekilde kullanmasının neden beni aştığını. Bana bir böcek gibi görünüyor.


3
Bu benim için işe yaramadı. Hala "KORUMALI ÖZEL ANAHTAR DOSYA" mesajı alıyorum. Sadece başka birisinin bu konuya benzer sonuçlarla gelmesi durumunda size bildirmek istedim.
Luc

Benim için çalıştı. Bu asinine olsa. Artık Cygwin kullanmıyorum. Ayrıca, bunu nasıl anladınız?
gam

13

XP'deyim ve bu Git Bash'in Github ile iletişim kurmasına izin verdi (çok fazla hayal kırıklığından sonra):

  1. kopyala c:\cygwin\bin\cyg*(~ 50 dosya)c:\Program Files\Git\bin\
  2. kopyalamak c:\cygwin\bin\ssh.exeiçin c:\Program Files\Git\bin\(üzerine)
  3. Şunları c:\Documents and Settings\<username>\.ssh\configiçeren dosyayı oluşturun:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (isteğe bağlı) ssh -v git@githubBağlantıda hata ayıklamak için kullanın .

  5. Bir itme deneyin!

Arka plan: Genel sorun bu ikisinin birleşimidir:

  • Hata: Mingw32 tüm dosyaları 644 (diğer / grup tarafından okunabilir) olarak görür ve mingw32, cygwin veya Windows çalıştığım hiçbir şey bunu düzeltebilir.
  • mingw32'nin SSH sürümü, özel anahtarlar için buna izin vermez (genellikle bir sunucuda iyi bir ilke).

Bir dosyayı telafi etmek gerek dikişleri c:\Documents and Settings\<username>\.ssh\configdeğiştirdiğiniz beri c:\Program Files\Git\bin\ssh.exe birlikte c:\cygwin\bin\ssh.exe. Sağ ?
爱国者

"Çok hayal kırıklığı" yorum w / katılıyorum. Gitolit için, cygwin / bin / cyg * 'yi Git dizinime (PortableGit - veya - Program Files / Git) kopyalayarak bu adımları izledim ve sonra git-Bash'ten git'i kullanabilirim, ancak cygwin bash'ı kullanamadım. PATH'ım için PortableGit ve Cygwin bin dizinlerini eklemek de sınırlı bir başarı ile çalıştı ... ama yine de PortableGit / bin / ssh.exe {,. Bak} 'ı yanlışlıkla kullanmamaları için ( c: /cygwin/bin/ssh.exe ile aynı). Temel olarak, kopyalanmayan diğer bağımlılıklar nedeniyle ssh.exe dosyasının cygwin dizininden çalıştırılması gerekir.
michael

Şimdi benim için çalışıyor olsa da, denemenin yanında hem Git'i hem de Cygwin'i PATH'e eklemek ve Git'in ssh.exe dosyasını, cygwin's ssh.exe'nin (cygwin bin dizininden) kullanılmasını sağlayacak şekilde taşımak olacaktır.
michael

Ekle LogLevel DEBUGgit.exe tarafından başlatılan ssh.exe süreçten ayıklama çıktısını almak için .ssh \ config dosyasına.
21'de knb

Teşekkürler - bu çözüm benim için çalıştı! Özellikle, c: \ cygwin \ bin \ 'den ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll ve cygz.dll dosyasını C: \ Program Files \ Git \ bin \ klasörüne kopyaladım.
nexus-bytes

10

Burada bulunan Git'i kullanan Windows 7 için (Cygwin yerine MinGW kullanır):

  1. Windows Gezgini'nde id_rsa dosyanızı sağ tıklayın ve Özellikler'i seçin.
  2. Güvenlik sekmesini seçin ve Düzenle ... seçeneğini tıklayın.
  3. Yöneticiler DIŞINDA tüm gruplar için Tam Denetim'in yanındaki Reddet kutusunu işaretleyin
  4. Git komutunuzu yeniden deneyin

1
Bu benim içindi, ama şimdi ssh'ın parolamı sevmediği yeni bir sorunum var, anahtar dosyamı verdiğim herhangi bir parola.
Jason Southwell

7

Tamam, işte Win7'deki izinlerle ilgili olarak Windows dosyalarımdaki değişikliği nasıl zorladım: Windows Gezgini'nde ssh anahtarınızı bulun: C: \ Kullanıcılar [your_user_name_here] .ssh \ id_rsa

Dosyayı sağ tıklayın> Özellikler> Güvenlik sekmesi> Gelişmiş düğmesi> İzinleri değiştir

Şimdi gerçekte kullanıcı adınız olmayan herkesi kaldırın. Buna Yönetici ve Sistem kullanıcıları da dahildir. Bu noktada, izinleri devralma hakkında bir diyalog alabilirsiniz - yalnızca bu dosyayı değiştirmek istediğimiz için DOESN'T devralma seçeneğini seçin.

Tamam'ı tıklayın ve bitene kadar kaydedin.

Pencerelerim dosya izinlerini komut satırından değiştirmeyeceği için günlerce bununla savaştım. Bu yolla da GERÇEKTEN yapılır - garip sonuçlara yol açabilecek heyecan verici çalışmalar kullanmak yerine.


6

Özellikler'den dosya izinlerini değiştirmek, devralmayı devre dışı bırakmak ve chmod 400'ü çalıştırmak benim için işe yaramadı. Özel anahtar dosyamın izinleri:

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

Sonra grubun Yok olduğunu fark ettim, bu yüzden koştum

chown alex: Yöneticiler ~ / .ssh / id_rsa

Sonra başarıyla chmod 400 ile izinleri değiştirmek ve bir git push çalıştırın.


4

MAC KULLANICILARI İÇİN:

Terminalde şunu yazarak anahtar çifti dosyanızın ayarlarını değiştirin:

chmod og-r *filename.pem*

(doğru dizinde olduğunuzdan veya komutta yol dosya adının doğru olduğundan emin olun).




2

Windows XP'de de aynı sorunu yaşadım. ~ ~ .Ssh / id_rsa dosyamda chmod 700 denedim ama işe yaramadı. Ben ~ / .ssh / id_rsa ls -l kullanarak izinleri bir göz vardı ben etkili izinleri hala 644 olduğunu görebiliyordu.

Sonra Windows izinlerinin klasörlerden izinleri devraldığını ve klasörün hala herkese açık olduğunu hatırladım. Bir çözüm de klasör izinlerini ayarlamak olabilir, ama daha iyi bir yol sisteme bu dosya için miras göz ardı söylemek için olacağını düşünüyorum. Bu, dosyanın özelliklerindeki güvenlik sekmesindeki gelişmiş seçenek kullanılarak ve "Üst izinlerden devral ..." öğesinin işaretini kaldırarak yapılabilir.

Bu, aynı sorunu olan diğerleri için yararlı olabilir.


1

Şu anda Git 1.6.5 ile oynuyorum ve kurulumunuzu çoğaltamıyorum:

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 anahtarlarım için de dosya izinlerini değiştirmez.

Çevre:

  • NTFS üzerinde Windows Server 2008 SP2
  • kullanıcı: yönetici
  • ortam değişkenleri:
    • PLINK_PROTOCOL = SSH
    • ANA = / c / profilleri / ev

Güncelleme: Git 1.6.5.1 de çalışıyor.


ilginç. Macun seçeneğini kullandığınız anlaşılıyor mu?
Ben Scheirman

1

Bu, dosyaları düzgün bir şekilde chmodlamak için yeterli olmadığı Windows'ta özellikle ilgili bir sorundur. Ortamınızı ayarlamanız gerekiyor.

Windows'ta bu benim için çalıştı:

  1. Cygwin'i yükleyin.

  2. Msysgit ssh.exe dosyasını cygwin's ssh.exe ile değiştirin.

  3. Cygwin bash kullanarak, chmod 600 benim için "id_rsa" olan özel anahtar dosyası.

  4. Hala çalışmıyorsa, Denetim Masası -> Sistem Özellikleri -> Gelişmiş -> Ortam Değişkenleri'ne gidin ve aşağıdaki ortam değişkenini ekleyin. Sonra 3. adımı tekrarlayın.

    Değişken Değer
    CYGWIN sbmntsec


1

Bu işlemi iki şey yaparak çözebildim, ancak 1. adımı yapmanız gerekmeyebilir.

  1. cygwin ssh.exe ve tüm cyg * .dll kopyasını Git'in bin dizinine kopyalayın (bu gerekli olmayabilir, ancak attığım bir adımdır, ancak bu tek başına bir şey düzeltmedi)

  2. şu adımları izleyin: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    ~ / .Ssh / config dosyama bazı ayrıntılar ekledim:

Ana bilgisayar heroku.com
Ana bilgisayar adı heroku.com
Port 22
Kimlikler Sadece evet
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive evet
Kullanıcı

Kullanıcıyı heroku.com için e-posta adresim olarak kullanmak zorunda kaldım Not: Bu bir anahtar oluşturmanız gerektiği anlamına gelir, anahtarı oluşturmak için bunu izledim ve anahtarın adını istediğinde id_heroku http: / /help.github.com/win-set-up-git/

  1. sonra şu anahtarı ekleyin:
    heroku tuşları: add ~ / .ssh / id_heroku.pub

1

Benim için önemli olan CYGWIN ortam değişkenini şu şekilde güncellemekti : " tty nodosfilewarning ". Anahtarı chmod etmeye bile gerek yoktu.


0

Birincil soruya doğrudan bir cevap değil, ancak cygwin'in klasörünün nasıl çalıştığı sorusu üzerine ... Genel bir kural olarak cygwin, tüm "dosyalarınızı" c: \ cygwin \ home \ kullanıcı adı eşdeğeri altına yerleştirir. Bu klasörü Windows kullanıcı dizini yerine kullanıcıya özgü ayarlar için ele alır.


0

Özel / ortak anahtar çiftini (id_rsa / id_rsa.pub) korumak veya başınızı duvara vurmaktan hoşlanmamanızın bir nedeni olmadıkça, onları yeniden oluşturmanızı ve genel anahtarınızı github'da güncellemenizi tavsiye ederim.

~ / .Ssh dizininizin yedek bir kopyasını alarak başlayın.

Aşağıdakileri girin ve mevcut dosyaları aşırı yazmak isteyip istemediğinize "y" yanıtını verin.

ssh-keygen -t rsa

Genel anahtarın içeriğini panonuza kopyalayın. (Mac'te nasıl yapmanız gerektiği aşağıda açıklanmıştır).

cat ~/.ssh/id_rsa.pub | pbcopy

Github'da hesabınıza gidin ve bu anahtarı ekleyin.

Name: My new public key
Key: <PASTE>

Terminalinizden çıkın ve yenisini yeniden başlatın.

Hiç girmediyseniz genel anahtarınız için "Parolanızı girin" gibi anlamsız hata mesajları alırsanız, bu başlangıç ​​tekniğini göz önünde bulundurun. Yukarıda gördüğünüz gibi, karmaşık değil.


0

Git'in Powershell'de tamamen çalışmasını hiç başaramadım. Ama git bash kabuğunda izinle ilgili herhangi bir sorunum yoktu ve chmod vb. Ayarlamam gerekmiyordu.



0

Anahtar dosyasını başka bir makineden kopyaladınız mı?

id_rsaİstemci makinede bir dosya oluşturdum ve anahtarı istediğim yere yapıştırdım. İzin sorunu yok. Ayarlanacak bir şey yok. Sadece çalıştı. Özel anahtarı oluşturmak için PuTTYgen kullanırsanız da çalışır.

Başka bir makineden kopyalıyorsanız muhtemelen bazı gizli grup sorunları.

İki Windows 8.1 makinesinde test edilmiştir. Özel anahtarı kopyalayıp yapıştırmak için Sublime Text 3'ü kullanma. Git Bash kullanma (Git-1.9.4-preview20140611).


0

Cygwin kurulumumu Şubat 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin) civarında bir sürüme yükselttikten sonra aniden UNPROTECTED PRIVATE KEY FILEuyarıyla karşılaştım.

Aşağıdaki komutu çalıştırdıktan sonra bu sorunu giderdim:

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

( başka bir soruya verilen başka bir cevap daha fazla bağlam verir)


0

@ koby'nin cevabı benim için çalışmıyor, bu yüzden küçük bir değişiklik yapıyorum.

cd ~/.ssh
chmod 700 id_rsa.pub

Mac'te bu benim için iyi çalışıyor.


0

Windows 10'da aynı sorunu yaşadım, burada SSH'yi bir Vagrant kutusuna dönüştürdüm. Bu eski OpenSSH sürümünde bir hata gibi görünüyor. Benim için ne işe yaradı:

  1. En yeni OpenSSH'yi http://www.mls-software.com/opensshd.html adresinden yükleyin.
  2. where.exe ssh

(Powershell kullanıyorsanız ".exe" yi not edin)

Şuna benzer bir şey görebilirsiniz:

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

Yukarıdaki örnekte, en son OpenSSH'nin yolda ikinci olduğunu ve bu nedenle yürütülmeyeceğini unutmayın.

Sırayı değiştirmek için:

  1. Windows düğmesini sağ tıklayın -> Ayarlar -> "Sistem Ortamı Değişkenlerini Düzenle"
  2. "Gelişmiş" sekmesinde "Ortam Değişkenleri ..." ni tıklayın.
  3. Sistem Değişkenleri altında "Yol" düzenleyin.
  4. Üstte görünmesi için "C: \ Program Files \ OpenSSH \ bin" ve "Yukarı Taşı" yı seçin.
  5. Tamam'ı tıklayın
  6. Yeni ortam değişkenlerinin geçerli olabilmesi için Konsolunuzu yeniden başlatın.

0

Sistemim bash / cygwin / git / msysgit / belki daha fazlası ile biraz karışıklık ...

chmodanahtar veya configdosya üzerinde hiçbir etkisi yoktu .

Sonra ona Windows'dan yaklaşmaya karar verdim, ki bu işe yaradı.

  1. İzninin düzeltilmesi gereken dosyayı sağ tıklayın.
  2. Seçin Properties.
  3. SecuritySekmeyi seçin .
  4. AdvancedEn alttaki simgesini tıklayın .
  5. Üst Changetarafın yanındaki simgesini tıklayın Owner.
  6. "Benim Müthiş Kullanıcı Adım" yazın (bunu geçerli Windows kullanıcı adınızla değiştirin) ve Check Namesardından TamamOK .
  7. Altında Permission entries:, "Benim Müthiş Kullanıcı Adım" olmayan her kullanıcıyı vurgulayın veRemove . "My-Awesome-Username" kullanıcı adı tek kalana kadar bunu tekrarlayın.
  8. "My-Awesome-Username" seçeneğini seçin ve Edit aşağıya .
  9. Type:Üst Allowtaraftaki seçeneğinin işaretli olduğundan emin olun ve yanındaki onay kutusunu işaretleyin Full control.
  10. Hit OK, Apply, OK, OK.

  11. Şimdi bir kez daha dene ...

Bazen sahte bash dosya sahipliğini kontrol edemez gibi görünüyor. Sahte bir senaryodan üretildiği için özellikle garip. Git şekil.


0

Burada önerilen geçici çözümlerin hiçbiri (chmod / chgrp / setfacl / windows perms) Windows 7 şirket VM'sinde msys64 ile benim için çalışmadı. Sonunda, stdin'de sağlanan anahtarla bir ssh ajanı kullanarak sorunu çözdüm. Bunu benim adresime eklemek .bash_profile, giriş bilgilerim için varsayılan yapar:

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

Şimdi ssh uzaktan kumanda ile git push and pull yapabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.