başka bir kullanıcı için nasıl bir ssh anahtarı yaratırsınız?


89

Başka bir kullanıcı için bir ssh anahtarı oluşturmaya çalışıyorum. Root olarak giriş yaptım. Sadece ssh-keygen tarafından oluşturulan dosyaları düzenleyebilir ve kökü istediğim kullanıcı olarak değiştirebilir miyim?


5
Kullanıcı için anahtar oluşturduysanız, ayrıca özel anahtarı almak için güvenli bir yönteme sahip olmanız gerekir ve bu kullanıcıya şifreyi ifade eder. Çok daha iyi, kullanıcı anahtarı oluşturur ve ardından size genel anahtarı e-posta ile gönderir.
user9517

Ancak bu zor değil mi şifre girişlerine izin vermiyorsunuz? Eğer sadece anahtar iseniz ve yeni bir kullanıcı kurarsam, anahtarlarını ayarlamak için giriş yapamazlar.
LVLAaron

Yanıtlar:


79

Sen ile bunu yapabilir ssh-keygen, ancak, özel anahtar siz kullanıcı şifresi kadar güvenli safe- tutmak çok dikkatli olmalıdır, böylece kullanıcıya özel olması gerekiyordu unutmayın. Daha da güvenli, çünkü kullanıcının ilk girişte değiştirmesi gerekmemektedir.

ssh-keygen -f anythingGeçerli dizinde iki dosya oluşturur. Herhangi bir hedef sunucudaki anything.pubkullanıcıya ekleyebileceğiniz ortak anahtardır ~/.ssh/authorized_keys.

Henüz çağrılan diğer dosya anythingözel anahtardır ve bu nedenle kullanıcı için güvenle saklanmalıdır. Varsayılan konum olacaktır ~username/.ssh/id_rsa(burada id_rsarsa tuşları için varsayılan olan). Unutmayın .sshdizin herkes ama kullanıcı tarafından okunabilir veya yazılabilir olamaz ve kullanıcının ev dizini herkes ama kullanıcı tarafından yazılabilir olamaz. Aynı şekilde, izinler özel anahtar için de sıkı olmalıdır: Yalnızca kullanıcı için okuma / yazma ve .ssh dizini ile özel anahtar dosya kullanıcıya ait olmalıdır.

Teknik olarak anahtarı her yerde saklayabilirsiniz. İle ssh -i path/to/privatekeybu konumu belirtmek olabilir, diğer taraftan bağlantı. Yine, uygun mülkiyet ve izinler kritik önem taşır ve haklarınız yoksa ssh çalışmayacaktır.


4
Özel bir (!) Anahtar olduğunu ifade etmek için +1
mailq

51
Kullanıcının gerçek bir insan olduğunu varsayıyorsunuz. Oturum açma, yardımcı program görevlerini gerçekleştirmek için kullanılan etkileşimli olmayan bir kullanıcıysa (örneğin, uzak sunucularda çalışan maine komut dosyalarını çalıştırarak), o zaman evet, muhtemelen o kullanıcının anahtarını el ile oluşturursunuz. Elbette, bunun kendi güvenlik çıkarımları var, ama bu başka bir hikaye.
Rilindo

2
@Rilindo ssh -iayrıcalıklı olmayan bir işlem için özel bir anahtara, birkaç otomatik rsync yedekleme işleminden daha fazlasını nasıl idare ettiğime dayanıyor . :)
Shadur

9
"Bunu yapmamalısın" diyen bu tür bir cevabı sevmiyorum ama soruyu cevaplama. Bu, asıl sorunun bağlamı için doğru ve faydalı olsa da, başkaları da farklı durumlarda aynı soruyu içerebilir. "ssh anahtarları asla başka bir kullanıcı için üretilmemelidir": Bu basit durumda doğrudur. Ancak, örneğin aynı fiziksel kişinin birden çok kimliğini göz önünde bulundurun. Birden fazla sistemde birden fazla hesap olabilir, hepsi anahtar oluşturmanıza izin vermez veya özel anahtarları uygun şekilde korumanıza izin vermez.
Gustave

usersveyauser's
Kullanıcı 15

135

Orada SSH anahtarlarında hiçbir kullanıcı bilgisi .

Genel anahtardaki son alan bir yorumdur (ve aşağıdaki komutu çalıştırarak değiştirilebilir ssh-keygen -C newcomment).

Başka bir kullanıcı için anahtar yapmak için özel bir şey yapmanıza gerek yok, doğru yere koyun ve izinleri ayarlayın.


5
Doğru cevap bu.
sebnukem

1
Sadece test ettim ve onayladım, sadece yorum değil, aynı zamanda kaldırılabilir ve tuşlar hala çalışıyor. Her zaman önemli olduğunu düşündüm! Doğru cevabı verdiğiniz için teşekkürler. Yukarıdaki yorumlar gibi, diğer kullanıcılar için anahtar oluşturmak için bir nedenim var, ancak nedenini söyleyemem, bu yüzden tartışma yok.
FreeSoftwareServers

18

Su kullanarak kullanıcı ol ve anahtarı o kullanıcı olarak çalıştır:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

DSA'yı neden belirtmelisiniz?
Ram,

Boğmaca, alışkanlık gücü. Güncellememe izin ver.
Rilindo

4
rsa kullanmalısınız (veya eliptik eğri varyantlarından biri olabilir). dsa, güvensiz anahtar boyutlarıyla sınırlıdır. rsa1, ssh1 için artık kimsenin kullanmaması gereken eski bir formattır.
Peter Green

Benim joeuserbir servis kullanıcısı, bu yüzden onlar gibi giriş yapamıyorum. Bir hizmet kullanıcısının (yalnızca işlemleri çalıştıran) bir ssh anahtarına sahip olmasına nasıl izin veririm?
Jonathan

@JonathanLeaders Bu kullanıcı olurken kullanıcının kabuğunu belirtirsiniz. Bunun gibi bir şey: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: FTP Kullanıcısı: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: uyarı: dizini / var / ftp olarak değiştiremiyor: Böyle bir dosya veya dizin yok Bu hesap şu anda mevcut değil. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ ``
Rilindo

6

Görüldüğü gibi burada , size SSH anahtarı eklemek istediğiniz kullanıcının klasörün okuma izinlerini değiştirmek için chmod kullanabilirsiniz.

vim /home/username/.ssh/authorized_keys

Ardından, anahtarı o dosyanın altındaki yeni bir satıra yapıştırın


1
Link öldü ...
Nyxynyx 4:17
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.