Ssh anahtarlarını başka bir makineye kopyalamanın en kolay yolu?


342

Evde tembelim ve ev makinelerim için parola doğrulaması kullanıyorum. Anahtar tabanlı kimlik doğrulamaya geçmeye hazırım. Web’de bunun nasıl yapılacağına ilişkin birçok seçenek vardır, bunlar arasında kedilerin yakalanması, sonra da anahtarın üzerine kaydırılması, anahtarın doğrudan kaydırılması vb.

Bir anahtarı kopyalamanın en kolay ve tavsiye edilen yolunu arıyorum, umarım Ubuntu ssh paketinin herhangi bir yerinde kolaylık sağlayan bir paket var?

Şifre girişlerini nasıl kapatacağımın farkındayım .


Yanıtlar:


463

ssh-copy-id(Komut openssh-client varsayılan olarak yüklü paket ve) tam olarak bunu yapar:

ssh-copy-id user@hostname.example.com

varsayılan kimliğinizin genel anahtarını ( -i identity_filediğer kimlikler için kullanın ) uzak ana bilgisayara kopyalar .

Varsayılan kimlik "standart" ssh anahtarınızdır. Bu sizin iki dosyaları (kamu ve özel anahtar) oluşur ~/.sshdizine, normalde adında identity, id_rsa, id_dsa, id_ecdsaveya id_ed25519(ve aynı .pub), anahtarın türüne bağlı. Birden fazla ssh anahtarı oluşturmadıysanız, kimliği belirtmek konusunda endişelenmenize gerek yoktur, ssh-copy-id sadece otomatik olarak seçecektir.

Kimliğiniz yoksa, araçla bir tane oluşturabilirsiniz ssh-keygen.

Ayrıca, sunucu varsayılan olandan farklı bir bağlantı noktası kullanıyorsa ( 22) bu şekilde tırnak işareti kullanmalısınız ( kaynak ):

ssh-copy-id "user@hostname.example.com -p <port-number>"

1
Varsayılan kimlik nedir?
Oxwivi

17
farklı liman için bunu kullanın:ssh-copy-id "user@host -p 6842"
jibon57

5
Kopyaladığınız uzak sunucu parola istemlerine izin vermiyorsa ve temelde kilitliyse, SSH erişimi için kaydetme ne yapmalı?
Cyle

10
Mac'te brew install ssh-copy-idkomutu yapabilir ve sonra çalıştırabilirsiniz.
Avishai

1
@MarcelStimberg lütfen -i profilini içerecek şekilde cevabı güncelleyin; insanlar muhtemelen 1'den fazla tuşa sahip ve hepsini zorluyorlar ya da yorumlarda -i seçeneği için avlanmak zorundalar
Nick

129

Marcel'in cevabını seviyorum. Bu komutu bilmiyordum. Her zaman Oracle web sitesinde bulduğum şeyi kullandım :

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

Onu buraya hala göndermeyi düşündüm, çünkü kabuk kodunda gücüyle elde edilebileceklerin iyi bir örneği ssh. Ancak, ssh-copy-iddoğru kullanmak için kesinlikle güvenli bir yoldur!

Klasör .sshzaten mevcut değilse, yukarıdaki komutun başarısız olacağını unutmayın. Ayrıca, asgari izin ayarlamak için dosyayı oluştururken daha iyi olabilir (temelde sadece sahibi için okuma-yazma). İşte daha gelişmiş bir komut:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

2
Bu kesin komutlar aynı zamanda bir Mac’ten de çalışıyor
Mihai P.

En fazla kabuk içeren herhangi bir Unix altında çalışmalıdır. Klasörün .sshuzak tarafında olmaması durumunda yayını güncellenmiş bir komutla güncelledim .
Huygens

1
catGerekli değildir - Normal girdi yönlendirme yeterlidir, örneğin< ~/.ssh/id_rsa.pub | ssh ...
maxschlepzig

@Huygens Teşekkürler. Bunu hatırlamak daha faydalıdır, çünkü herhangi bir şey yüklemenize gerek yoktur ve aynı zamanda örneğin gelişmiş örneğinizde gösterildiği gibi sunucu tarafı izinlerini değiştirmek gibi yabancı komutları çalıştırmak için de iyi olabilir.
Jonathan Komar

2
Neden bu kadar kırıldığını bulmakta yararlı olan sshose ssh kullanmanıza izin verdiğinden bu yolu tercih ederim. sshcopyid sadece dondu ve hiç çalışmadı, bu mükemmel gitti.
Sirenler

31

Grafik yöntemi

  1. Açık UygulamalarŞifreler ve AnahtarlarKişisel Tuşlar .
  2. Anahtarını seçin ve ardından UzakGüvenli Shell için yapılandır Key .

SSH Bağlantısı İçin Bilgisayar Kurma


Menümde "Şifreler ve Şifreleme Anahtarları" yok.
Jorge Castro

Hangi Ubuntu sürümünü kullanıyorsunuz? Ubuntu 10.04 LTS’de varsayılan olarak mevcut olmalıdır.
ændrük

10.10, etiketi ekledim. Marcel'in cevabı aradığım şey, masaüstü odaklı cevabınız için +1 olsa!
Jorge Castro

4
Bu program seahorse.
Gilles,

1
Bu uygulamanın 10.10'daki Sistem> Tercihler menüsünde olduğunu düşünüyorum (şu anda kontrol edemiyorum, 10.04'im)
Huygens

18

Ubuntu'da anahtarlarınızı Launchpad'den alabilirsiniz:

ssh-import-id [launchpad account name]

Ayrıntılar :

  1. Bir Launchpad hesabına ihtiyacınız var, bu yüzden giriş yapın veya bir hesap oluşturun.
  2. Giriş yaptıktan sonra, SSH tuşlarının yanındaki düğmeye tıklayın :
  3. Genel anahtar dosyanızın içeriğini o alana yapıştırın (yorum dahil). Böyle bir anahtar gibi görünüyor:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Burada, ssh-rsaanahtarın bir RSA anahtarı, AAAAB3Nza .... UyDOFDqJpgerçek anahtar ve lekensteynyorum olduğunu belirtir .

  4. Genel Anahtarı İçe Aktar düğmesine basarak anahtarı kaydedin.
  5. Her şey yolunda giderse, anahtarınız şimdi SSH anahtarları altında listelenmelidir :

Paket ssh-import-iduzaktan kumandadan erişilmesi gereken makineye kurulmalıdır. Bu paket, openssh-serverönerilen bir paket olduğu için paketle birlikte yüklenir openssh-server. Kurulduğundan emin olduktan sonra ssh-import-idİstemci makinede, şunu çalıştırın:

ssh-import-id [launchpad account name]

Bu, genel anahtarı, sizi MITM saldırılarından koruyan HTTPS üzerinden Launchpad sunucularından indirir.

Ubuntu Lucid'de ve öncesinde, aynısını başarabilirsiniz:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echoKomutu SSH anahtarla satırdan sonra ekstra bir yeni satır almak için gereklidir.


14

özel bağlantı noktası için

ssh-copy-id -i "user@hostname.example.com -p2222"

-i varsayılanları değiştirir ~ / .ssh / id_rsa.pub, eğer başka bir anahtar istiyorsanız, -i'den sonra anahtarın yolunu girin

UYARI: -i yazmadıysanız, ~ / .ssh içinde bulunan tüm anahtarlarınızı kopyalar.


1
Bundan emin misiniz UYARI? "-i identity_file - Yalnızca identity_dosyasında (ssh-add (1) veya default_ID_file aracılığıyla kimlikleri aramak yerine) bulunan anahtarları kullanın. Dosya adı .pub ile bitmiyorsa, bu dosya eklenir. ihmal edilir, default_ID_file kullanılır. "
Yousha Aleayoub

0

ssh-copy-idtam olarak bunu yapar. Buradaki diğer cevapların bazılarının neden yanlış bilgi eklediğinden emin değilim. Yardım aşağıdakileri gösterir:

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

Sadece bir CentOS 7.6 sunucusuyla Ubuntu 18.04 istemcisinde aşağıdakileri denedim ve cazibe gibi çalıştı. Örnek, özel bir bağlantı noktasının kullanıldığını 2222ve adresin açık anahtarının belirtildiğini gösterir .~/.ssh/path-to-rsa.pub

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld

Komutu çalıştırmadan önce -n, sonunda komutun amaçlandığı gibi çalışacağını doğrulayan kuru bir işlem yapmak için düğmeyi kullandım . Bir kere onayladıysam, komutu tekrar yukarıdaki gibi çalıştırdım, -nanahtarsız.

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.