SSH için kalıcı olarak nasıl kimlik eklerim?


37

Ne ssh-add <key>zaman bir web sunucusuna girmem gerektiğine bakmam gerekiyor. Kimliği kalıcı olarak eklemenin bir yolu var, bu yüzden her oturum açmada kimlikleri eklemeye devam etmem gerekmez mi?

EDIT: Anahtar, bir bulut hizmetinden indirdiğim bir pem dosyasıdır.

Yanıtlar:


40

Anahtarınızı normal şekilde oluşturun:, ssh-keygenardından bu anahtarı ssh-copy-id, uzak sunucunun kabul ettiği anahtarlarla eşitleyeceği uzak sunucuya yerleştirin.

ssh-keygen
ssh-copy-id user@host

Parolanızı soracak ve .pubanahtarınızı uzak SSH sunucusuna bağlamak için gerekli tüm adımları uygulayacaktır .

Varsayılan olarak, tüm .pub anahtarlarınızı uzak sunucuya kopyalar. Eğer anahtarınızı yeni yarattıysanız, ssh-keygeno zaman bu bir problem değildir (çünkü sadece bir tane var!). Ancak, birden fazla anahtarınız varsa, -ibayrakla yalnızca belirli bir anahtarı kopyalayabilirsiniz .

ssh-copy-id -i ~.ssh/key_name.pub user@host

key_name.pubAnahtarın adıyla değiştirme .


4
Sadece ssh'ye maruz kalan, web servisinin anahtarı yaratıp bana verdiği bulutta barındırılan sunuculara erişmek için kullandığı (benim durumumda AWS sunucuları) benim gibi biri veya soru soran kişi için bu cevabı zor önemli bir arka plan araştırması yapmadan anlayın. Hiç kullanmadım ssh-keygenya da ssh-copy-idörneğin. Öte yandan, bunun gibi cevaplar benim bilgi düzeyim göz önüne alındığında bana oldukça açık ve faydalı. Cevabı benim gibi cahil insanlara yardım etmek için herhangi bir şekilde ince ayar yapmak isteyip istemediğinize bağlı. :)
Mark Amery

Cevap, yeni bir anahtar oluşturmak istediğimi varsayıyor. Ya anahtarlığa mevcut bir anahtarı kaydetmek istersem?
donquixote

@donquixote: Aşağıdaki cevaba bakınız user626052.
naught101

7

Bu komutla bir ssh anahtarı oluşturabilirsiniz:

ssh-keygen

Ardından anahtarınızı sunucuya şu şekilde kopyalayabilirsiniz:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

Artık web sunucunuzda otomatik olarak oturum açabilirsiniz.


1
Anahtarı sunucuya kopyalamak için sırasıyla ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servernameveya kullanabilirsiniz ~/.ssh/id_rsa.pub. Aslında, anahtar dosya için varsayılan adı kullanırsanız, onu belirtmeniz bile gerekmez.
Carsten Thiel

5

bunu içine koy ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
Asıl soruya cevap veren tek cevap budur. Diğerleri, varsayılan ortak anahtarı yalnızca tek bir hedef sunucuya ekliyor, bu da farklı sunucu kümeleri için iki + ayrı varsa sinir bozucu oluyor.
naught101

3

Anahtarınız şifresiz ve dosyalardan biri olarak adlandırılmışsa, ssh'yi tanımlarken ( ~/.ssh/id_dsaveya ~/.ssh/id_rsa) aramaya çalışacaktır , aracınıza eklemeniz gerekmez.

FAKAT. Çalınan dosyaların en ufak bir olasılığı varsa, herhangi birinin bu kimliği kullandığınız sunuculara erişmesine izin vermeniz gerekir . Kısacası, karıncalanmış.

IMHO, şifresiz özel anahtarlar kötü bir uygulamadır ve yalnızca ~/.ssh/authorized_keysçok kısıtlayıcı olan ortamlarda kullanılmalıdır .


1
ssh-agent, giriş yaparken şifresi çözülmüş olan özel anahtarınızı saklayabilir. Oh, ve ssh-copy-id, ortak anahtarınızı da sunuculara kopyalayabilir.
Frank

2

Ssh-add komutunu çalıştıracak kısa bir kabuk betiği yazın ve ardından aşağıdaki gibi bağlanın:

ssh-add ~/.ssh/your-key
ssh user@remotehost

Daha sonra bir komutla sunucunuza ssh yapabilirsiniz.


1

AWS için, pem anahtarını indirin ve çalıştırın:

ssh-add /path/to/pemfile.pem

Bu benim için çalıştı, Ubuntu 18.04. Kaynak , başka hiçbir şeye gerek yoktu.

Not : Ancak, bunu yapmadan önce izinleri 400'e ayarlamak önemlidir.

chmod 400 /path/to/pemfile.pem

Değilse bir hata alırsınız:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @
UYARI: KORUMALI ÖZEL KEY DOSYA! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@ '/ home/toing_toing/blablabla.pem' için 0664 numaralı izinler çok açık. Özel anahtar dosyalarınıza başkaları tarafından erişilemez. Bu özel anahtar dikkate alınmayacak.


0
 ssh serveruser@servername "cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys" 

-2

Amazon Bulutu hakkında mı konuşuyorsun? ~ / .Bashrc dosyasında ortam değişkenleri oluşturun:

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

evet, bulut hakkında konuşuyorum, ancak bu, örneğin içine ssh
yapmanın

Tamam. Bu yüzden şifresi olmayan bir RSA anahtarı oluşturun: 'ssh-keygen -t rsa' ve daha sonra üretilen ortak anahtarı (~ / .ssh / id_dsa.pub) uzak sunucunun ~ / .ssh / onay_sayısı dosyasına birleştirin. Bunu başarmak için tek bir astar birçok kişi tarafından verildi.
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.