ssh “izinler çok açık” hatası


2053

Mac'imde bir sorun yaşadım, burada diske artık herhangi bir dosya kaydedemedim. OSX aslanını yeniden başlatmam ve dosya ve erişim izinlerini sıfırlamam gerekiyordu.

Ama şimdi bir depo işlemek istediğimde ssh'den aşağıdaki hatayı alıyorum:

Permissions 0777 for '/Users/username/.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.

İd_rsa dosyasına hangi izin düzeylerini vermeliyim?


19
Soruyu sorduğunuz için teşekkürler. Bu hata mesajını yazan kişi birkaç geçerli yapılandırma önermek için daha iyi bir deneyim olacaktır (aşağıda önerildiği gibi 600 veya 400 gibi). Yararlı olan tam hata mesajları yazmayan programcılar hepimize yıllardır işkence yapıyorlar!
George Pligoropoulos

FWIW, bu sunucuda man sayfasından StrictModesetkinleştirilmesiyle ilgilidir : "StrictModes sshd (8) 'in oturum açmayı kabul etmeden önce dosya modlarını ve kullanıcının dosyalarının ve giriş dizininin sahipliğini kontrol edip etmeyeceğini belirtir." - önerilmese de bunu devre dışı bırakabilirsiniz. sshd
masseyb

Yanıtlar:


3471

Anahtarlar yalnızca sizin tarafınızdan okunabilir olmalıdır:

chmod 400 ~/.ssh/id_rsa

Anahtarlar tarafından okunabilir olması gerekiyorsa:

chmod 600 ~/.ssh/id_rsa

600 de iyi görünüyor (aslında çoğu durumda daha iyi, çünkü daha sonra düzenlemek için dosya izinlerini değiştirmeniz gerekmez).

Manpage'ten ilgili bölüm ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

299
400, çok düşük olduğundan kendi kullanıcınız tarafından yazılamaz. 600 aslında sahibinin sadece okumaya değil, okuma-yazmalarına izin verdiği için tavsiye edilir.
jfreak53

8
Bugün 400'ün önemli olduğu zamanlar olduğunu keşfettim. Varsa, pty et al özelliklerinin ayarlanmış bir yetkili_anahtarlar dosyanız olduğunu varsayalım . Dosya yazılabilirse, kullanıcı aslında yetkili_anahtarlar dosyasının üzerine yazabilir ve etkileşimli kabuk erişimi elde edebilir! Akılda tutulması gereken bir şey olsa da, çoğu insan için kesinlikle genel durum değildir.
quickshiftin

17
AWS aslında web sitelerinde 400 izni öneriyor. OS X'te yaptığım bu oldu ve işe yaradı.
George Mylonas

5
Bu kesinlikle işe yarar ve daha güvenlidir. Tek dezavantajı, düzenlemek için 600'e değiştirmeniz gerektiğidir. İd_rsa ve id_rsa.pub için, bu dosyaları nadiren düzenleyeceğiniz için önemli olduğundan şüpheliyim, ancak yetkili_anahtarlar için sinir bozucu olabilir. En iyi dengeleri anlamak ve her sistemi uygun şekilde yapılandırmak.
quickshiftin

3
Sanırım bunları ne sıklıkta düzenlediğinize de bağlı. Birçok insan onu ayarlayıp unutur, böylece 400 kişi diğerlerinden ve kendi eylemlerinizden daha güvenli olur; gerektiğinde 600 olarak değiştirilir. İş akışınızın ve ssh-savy'inizin bir parçasıysa, izinleri değiştirmeye devam etmek belki de bir engel olacaktır.
vol7ron

99

Windows 8.1'de Cygwin kullanarak çalıştırılması gereken bir komut vardır:

chgrp Kullanıcıları ~ / .ssh / id_rsa

Daha sonra buraya gönderilen çözelti uygulanabilir, 400 veya 600 tamam.

chmod 600 ~ / .ssh / id_rsa

Ref: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
yerel bağlıdır. "Kullanıcılar" böyle bir grup hatalı çünkü "chgrp Użytkownicy ~ / .ssh / id_rsa" çalıştırmak zorunda kaldı.
Marcos

Bunu da yapmak zorundaydım. Cygwin dizinim varsayılan konumda ( C:\cygwin64) idi, bu yüzden muhtemelen izinleri devraldı. Bunun sahip olduğum diğer dizüstü bilgisayarlarda gerçekleşmediği garip.
Zach Thacker

3
@Marcos Yerel ayardan bağımsız olarak çalışan bir yanıt ekledim: stackoverflow.com/a/28647713/67013
thehouse

4
Windows 10. Yalnızca ikinci komutu kullandı. Bir cazibe gibi çalıştı.
StalkAlex

Alternatif dillerdeki kurulumlar için 'Kullanıcılar' grubunun alternatif tanımlayıcıları olduğunu unutmayın.
John Rumpel

43

Windows 8.1'de çalışan yerel ayardan bağımsız çözüm:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

Yerel ayar Kullanıcılar için farklı bir kelime kullansanız bile, GID 545 her zaman 'Kullanıcılar' grubuna işaret eden özel bir kimliktir .



24

AFAIK değerleri:

Anahtar dosyasının bulunduğu ".ssh" gizli dizini için 700

"İd_rsa" anahtar dosyası için 600


19

Windows 10'umda hatayı aldım, bu yüzden aşağıdaki gibi izin ayarladım ve çalışıyor.

Windows 10 id_rsa izni

Ayrıntılı olarak, yalnızca 'SİSTEM' ve 'Yöneticiler' olana kadar diğer kullanıcıları / grupları kaldırın. Ardından Windows giriş bilgilerinizi sadece Okuma izniyle ekleyin.

id_rsaDosyanın c:\users\<username>klasörün altında olduğunu unutmayın .


Win-10'da da aynı problem var. Açıklamanıza dayanarak, gerçekte neye izin verdiğinizi veya reddettiğinizi netleştiremiyorum - seçenekler + Sistem ve Yöneticiler olarak "kullanıcılar" ve "kimliği doğrulanmış kullanıcılar" ve "belirli kullanıcı" değilim. Ayrıca cygwin'i anlayamadım - kurmak veya kullanmak. (?)
Sam-T

2
Win10 için anahtarınızı kullanıcının evine taşımanız gerekiyor - bu mükemmel çalıştı. Anahtar için tam yol vermeye ve izinlerle uğraşmaya çalışıyordum - hiçbir şey işe yaramadı.
Sam-T

@ Sam-T adınızı listede göremiyorsanız, tuşuna basıp Edit...sonra tuşuna basıp Add...sonra metin kutusuna adınızı yazıp "Enter the object names to select"düğmesine basın Check Names( OKve başka bir tuşa basın OK), Securitysekmenizde
adınızın

Muhtemelen adı özellikle talimatlarınıza göre ekleyebilirim. Ama asıl sorum şuydu: Herkes için Reddet ve İzin Ver tam izinleri . Bu arada ben sadece ekleyerek sorunu çözmek başardı söz .pemetmekmyuser directory
Sam-T

15

Bir anahtarda "0x00" izin gereksiniminin bir istisnası vardır. Anahtarın sahibi ve grubunun sahibi olduğu bir gruba aitse, grubun sahibi "0440" olabilir ve bu gruptaki herhangi bir kullanıcı anahtarı kullanabilir.

Bunun "0xx0" setindeki herhangi bir izinle çalışacağına inanıyorum, ancak her sürümü her kombinasyonda test etmedim. CentOS 6'da 5.3p1-84 ile 0660'ı denedim ve grup kullanıcının birincil grubu değil, ikincil bir grup ve iyi çalışıyor.

Bu genellikle birisinin kişisel anahtarı için değil, otomasyon için kullanılan bir anahtar için, uygulamanın anahtarla uğraşmasını istemediğiniz bir durumda yapılır.

Benzer kurallar .ssh dizin kısıtlamaları için de geçerlidir.


15

400 izin verin, aşağıdaki komutu yürütün

chmod 400 /Users/username/.ssh/id_rsa

resim açıklamasını buraya girin


harika! Bu benim için problemi çözdü. Teşekkür ederim!
Emanuela Colta

11

Windows 10'da cygwin's chmod ve chgrp benim için yeterli değildi. Dosyaya sağ tıklamak zorunda kaldım -> Özellikler -> Güvenlik (sekme) ve aktif kullanıcı dışında tüm kullanıcıları ve grupları kaldırmak zorunda kaldım.


Bu sadece çalışan bir çözüm :) Zamanımı kurtardığınız için teşekkürler
Atul

Bunu yaptıktan sonra, normal Windows komut isteminden de ssh yapabileceğimi buldum. Cygwin kullanmaya gerek yok. Harika!
Atul

8

Benim için işe yarayan şey bu (mac'ta)

sudo chmod 600 path_to_your_key.pem 

sonra :

ssh -i path_to_your_key user@server_ip

Umarım yardımcı olur



4

Başka bir mac'tan geçişten sonra aynı sorunu aldım. Ve github'ı anahtarımla bağlamak engellendi.

İzni aşağıdaki gibi sıfırladım ve şimdi iyi çalışıyor.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

AWS'de Windows 10 ssh Ubuntu EC2'ye “izinler çok açık” hatası

AWS'den .pem dosyasını kullanarak bir Ubuntu EC2 örneği içine ssh çalışırken bu sorun vardı.

Windows'da bu, bu anahtarı .ssh klasörü altında oluşturulmuş bir yere koyduğumda çalıştı

C:\Users\USERNAME\.ssh\private_key

Windows 10'da izin ayarlarını değiştirmek için:

Dosya Ayarları> Güvenlik> Gelişmiş

Devralmayı devre dışı bırak

Devralınan İzinleri Açık İzinlere Dönüştür

Yöneticiler dışındaki tüm izin girdilerini kaldırın

Daha sonra güvenli bir şekilde bağlanabilir.


4

Benim için (Windows için Ubuntu Alt Sistemini kullanarak) hata mesajı şu şekilde değiştirildi:

 Permissions 0555 for 'key.pem' are too open

Kökün varsayılan kullanıcı olarak kullanılmasının sebebi olduğu ortaya çıktı.

Cmd kullanarak bunu değiştirin:

 ubuntu config --default-user your_username

3

İlginç mesaj burada. İşletim Sistemleri, özel anahtarınız çok açıksa uzak bağlantıları engelleyecek kadar akıllıdır. İd_rsa izinlerinin tamamen açık olduğu riski okur (okur, herkes tarafından düzenlenebilir).

{Önce kilidinizi değiştirebilir ve daha sonra sahip olduğu anahtarlarla açabilirsiniz}

cd ~/.ssh
chmod 400 id_rsa

Birden fazla sunucuda (üretim dışı) çalışırken, çoğumuz uzak sunucuyu ssh ile bağlamamız gerektiğini düşünüyoruz. İyi bir fikir, sunucular arasında ssh güvenleri oluşturmak için bir uygulama düzeyi kodu (jsch kullanarak java olabilir) olması. Bu şekilde bağlantı şifresiz olacaktır. Durumda, perl takılı - biri de net ssh modülünü kullanabilir.


1

Ansible ile oynarken bu hatayla karşılaştım. Bu sorunu çözmek için özel anahtarın izinlerini 600 olarak değiştirdim. Ve işe yaradı!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

Özel anahtarım için 600 düzey izin denedim ve bu benim için çalıştı. chmod 600 privateKey [dev] $ ssh -i privateKey kullanıcısı @ ip çalıştı

chmod 755 privateKey [dev] $ ssh -i privateKey kullanıcı @ ip Aşağıdaki sayısında veriyordu: 'privateKey' için 0755 İzinler çok açık. Özel anahtar dosyalarınıza başkaları tarafından erişilemez. Bu özel anahtar yok sayılır. "PrivateKey" anahtarını yükle: hatalı izinler


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Öncelikle genel anahtarların konumunu bulun, çünkü bu genel anahtarı kullanarak ftp'ye giriş yapmaya çalıştığınızda. önce bir anahtar oluşturmamız gerekiyor ve bu anahtar izinlerini 600 olarak ayarladık.
            Doğru konumda olduğunuzdan emin olun.
            Aşama 1:
            doğru yere git
            Adım 2:
            Doğru konuma geldikten sonra
 komut: 
     chmod 600 id_rsa

        This has solved my issue.


-2

Win10 için anahtarınızı linuxlike os için kullanıcının ev dizinine taşımanız gerekir, 700 gibi veya 600 vb.


Win10 için anahtarınızı kullanıcının evine taşımanız gerekiyor - bu mükemmel çalıştı. Anahtar için tam yol vermeye çalışıyorum ve izinleri ile uğraşmak - işe yaramadı.
Sam-T
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.