UYARI: Korunmasız ÖZEL ANAHTAR DOSYA! Amazon EC2 Bulut Sunucusuna SSH kullanmaya çalışırken


190

Panda'yı bir Amazon EC2 örneğine kurmak için çalışıyorum. Dün gece hesabımı ve araçlarımı kurdum ve kendi kişisel durumumla etkileşimde bulunmak için SSH'yi kullanırken sorun yaşamadım, ancak şu anda Panda'nın EC2 örneğine izin verilmiyor. Panda'ya Başlarken

Aşağıdaki hatayı alıyorum:

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Dün gece kişisel örneğime girmek için anahtar çiftimi 600'e koydum ve izinleri 0 olarak ayarlamayı ve hatta yeni anahtar dizeleri oluşturmayı denedim, ancak hiçbir şey işe yaramıyor gibi görünüyor.

Herhangi bir yardım çok yardımcı olacaktır!


Hm, dizinde izinler 777 olarak ayarlanmadığı sürece, ec2-run-instance komut dosyası anahtar dosyalarımı bulamıyor gibi görünüyor. SSH'de yeniyim, bu yüzden bir şeyleri gözden kaçırıyor olabilirim.


ec2-run-instance'ları yalnızca Amazon'un tarafında yaşayan bir anahtar çifti adı gerektirir. Gerçek özel anahtarınızı (diskteki) yalnızca SSH'yi kullanırken kullanmalısınız. Ec2-run-instance'larından ne hata alıyorsunuz?
user27619

3
bu soru için korkunç bir başlık.
MikeNereson

2
@MikeNereson: Bunu düzenlemekten çekinmeyin, işte bu şekilde işleri daha iyi hale getiriyoruz
Stu Thompson

600 (ondalık) değil, 0600 (sekizli) olarak ayarladığınızdan emin misiniz?
hyde

5
chmod 400 ~/.ssh/id_rsa Referans: stackoverflow.com/a/9270753/2082569
atulkhatri

Yanıtlar:


210

Dün gece kişisel örneğime girmek için anahtar çiftimi 600'e getirdim,

Ve böyle olması gerekiyordu.

Gönderen EC2 belgelerine sahip olduğumuz "Eğer OpenSSH (veya herhangi makul paranoyak SSH istemcisi) kullanıyorsanız o zaman muhtemelen sizin tarafınızdan sadece okunabilir yüzden bu dosyanın izinlerini ayarlamak gerekir." Bağladığınız Panda belgeleri Amazon'un belgelerine bağlantı veriyor, ancak gerçekten ne kadar önemli olduğunu aktarmıyor.

Fikir, anahtar çifti dosyalarının parolalar gibi olması ve korunması gerektiğidir. Bu nedenle, kullandığınız ssh istemcisi bu dosyaların güvenliğini ve yalnızca hesabınızın bunları okuyabilmesini gerektirir.

Dizini 700 olarak ayarlamak gerçekten yeterli olmalı, ancak dosyalar 600 olduğu sürece 777 zarar görmeyecek.

Karşılaştığınız sorunlar müşteri tarafındadır, bu nedenle takip sorularına yerel işletim sistemi bilgilerini eklediğinizden emin olun!


3
Bugün sadece anahtar dosya grup okunabilir olmasını istiyorum bir duruma girdim (kişisel giriş için değil ssh kullanarak, ancak uzak sunucuda bir komut dosyası yürütmek için, bu amaçla uzak sunucuda özel kullanıcı, yetkili_anahtarlar sadece kilitli söz konusu komut dosyası çalışır ve kaynak sunucudaki birden çok kişinin komut dosyasını çalıştırmak için erişimi olmalıdır). Oh, sanırım basit bir çözüm, erişmesi gereken tüm kullanıcılar için ~ / .ssh / içine kopyalar koymak ya da tüm kişisel anahtarlarla yetkili_anahtarları doldurmaktır.
tobixen

@tobixen: İki yıl geliyor, ama ... 'doğru' geçici çözüm anahtarı özel bir kullanıcıya yerleştirmek ve grup kullanıcılarının bu komutu özel kullanıcı olarak çalıştırmasına sudo erişimi sağlamak olacaktır.
Stu Thompson

EC2 belgelerine @StuThompson bağlantısı ölü gibi görünüyor. Lütfen güncelleyebilir misiniz?
Aniket Thakur

Cevabınızda işe yaraması için ne yapmam gerektiğini göremiyorum, lütfen cevap verin :)
Pratik

@Pratik ayar hem anahtar dosyalar için 600, hem de dizin için 777 çalışmalıdır.
Jamo

55

Özel anahtar dosyalarını içeren dizinin 700 olarak ayarlandığından emin olun

chmod 700 ~/.ec2

Dosyada yürütme ayrıcalıklarına sahip olmak istemenizin özel bir nedeni var mı?
Zoltán

1
@ Zoltán bir dizin değil, bir dosya.
avmohan

Ben sadece .pem dosyasında kullandım ve benim için çalıştı.
CGTheLegend

30

Bunu düzeltmek için, 1) izinleri varsayılana sıfırlamanız gerekir:

sudo chmod 600 ~/.ssh/id_rsa sudo chmod 600 ~/.ssh/id_rsa.pub

Başka bir hata alıyorsanız: Bağlanmaya devam etmek istediğinizden emin misiniz (evet / hayır)? evet Ana makine, bilinen ana makineler listesine eklenemedi (/home/geek/.ssh/known_hosts).

2) Bu, söz konusu dosyadaki izinlerin de yanlış ayarlandığı ve bununla ayarlanabileceği anlamına gelir:

sudo chmod 644 ~/.ssh/known_hosts

3) Son olarak, dizin izinlerini de ayarlamanız gerekebilir:

sudo chmod 755 ~/.ssh

Bu sizi tekrar çalışmaya başlatır.


17

Özel anahtar dosyası korunmalıdır. Benim durumumda uzun zamandır public_key kimlik doğrulamasını kullanıyorum ve izni özel anahtar ve 644 (rw- r--) ve için 600 (rw- --- ---) olarak ayarladım ana klasördeki .ssh klasörü 700 izne sahip olacaksınız (rwx --- ---). Bunu ayarlamak için kullanıcının ana klasörüne gidin ve aşağıdaki komutu çalıştırın


.Ssh klasörü için 700 iznini ayarlama

chmod 700 .ssh


Özel anahtar dosyası için 600 iznini ayarlama

chmod 600 .ssh/id_rsa


Ortak anahtar dosyası için 644 iznini ayarlama

chmod 644 .ssh/id_rsa.pub


2

Özel anahtarınızı, genel anahtarınızı, bilinen_host'larınızı aynı dizinde tutun ve aşağıdaki gibi giriş yapmayı deneyin:

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • Aynı dizin anlamında cd /Users/prince/Desktop. Şimdi lscommand yazın ve görmelisiniz **.pem **.ppk known_hosts

Not: Aynı dizinden oturum açmayı denemeniz gerekir veya mevcut dizininizdeki .pem dosyasını bulamadığı için izin verilmedi hatası alırsınız.


Herhangi bir dizinden SSH yapabilmek istiyorsanız, ~/.ssh/configdosyaya aşağıdakileri ekleyebilirsiniz ...

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

Şimdi dizinin nerede olduğuna bakılmaksızın sunucunuza SSH yazabilirsiniz ssh your.server(veya "Host" dan sonra yazdığınız adı).


1

Pencerelerde git bash'ı kullanmayı deneyin ve orada Linux komutlarınızı kullanın. Kolay yaklaşım

chmod 400 *****.pem

ssh -i "******.pem" ubuntu@ec2-11-111-111-111.us-east-2.compute.amazonaws.com

WSL kullanıyorsanız, pm dosyasını / mnt dizinlerinde etkili olmayacağından pem dosyasını bir Linux klasörüne kopyaladığınızdan emin olun.
Paulo Merson

1

Chmod komutunu kullanarak Dosya İznini değiştirme

sudo chmod 700 keyfile.pem

0

Başka bir şey düşünüyorum, var olmayan farklı bir kullanıcı adı ile giriş yapmaya çalışıyorsanız, bu alacağınız mesajdır.

Bu yüzden ec2 kullanıcısıyla ssh yapmaya çalıştığınızı varsayıyorum ama son zamanlarda çoğu centos AMI'nin ec2 kullanıcısı yerine centos kullanıcısı kullandığını hatırlıyorum

Bu yüzden ssh -i file.pem centos@public_IPlütfen bana doğru kullanıcı adıyla ssh'ye gittiğinizi söyleyin, aksi takdirde ~ / .ssh / id_rsa veya file.pem dosyalarınızdaki doğru izinlerle bile bu tür bir hata mesajı görmenizin güçlü bir nedeni olabilir.


0

Sadece tökezleyen herkes için bir not:

Sizinle paylaşılan bir anahtarla SSH'ye çalışıyorsanız, örneğin:

ssh -i /path/to/keyfile.pem user@some-host

keyfile.pemÖzel / genel anahtar sizinle nerede paylaşılıyor ve bağlanmak için kullanıyorsunuz ve içine kaydettiğinizden emin olun .~/.ssh/chmod 777

Dosyayı makinemde başka bir yere kaydedildiğinde kullanmaya çalışmak OP'nin hatasını veriyor. Doğrudan ilgili olup olmadığından emin değilim.


0

Çözüm, dosyayı yalnızca dosyanın sahibi tarafından okunabilir hale getirmektir, yani sekizli mod gösteriminin son iki basamağı sıfır olmalıdır (örn. Mod 0400).

OpenSSH bunu şu authfile.cadla kontrol eder sshkey_perm_ok:

/*
 * if a key owned by the user is accessed, then we check the
 * permissions of the file. if the key owned by a different user,
 * then we don't care.
 */
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("Permissions 0%3.3o for '%s' are too open.",
        (u_int)st.st_mode & 0777, filename);
    error("It is required that your private key files are NOT accessible by others.");
    error("This private key will be ignored.");
    return SSH_ERR_KEY_BAD_PERMISSIONS;
}

Yorumdan sonraki ilk satıra bakın: son iki sekizlik basamaktaki tüm bitleri seçerek dosya moduna karşı "bitsel ve" yapar ( her bir bitin sırasıyla r / w / x anlamına geldiği 07için sekizli 0b111olduğu için). .

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.