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

Evde tembelim ve ev makinelerim için şifre kimlik doğrulaması kullanıyorum. Anahtar tabanlı kimlik doğrulamaya geçmeye hazırım. Web'de bunun nasıl yapılacağına dair birçok seçenek vardır, bunlar arasında anahtarın üzerine basılması, anahtarın doğrudan üzerine basılması vb. Yer alır.

Bir anahtarı kopyalamanın en kolay ve önerilen yolunu arıyorum, umarım Ubuntu ssh paketinde bir yerde kullanışlı bir sarıcı vardır?

Zaten farkındayım parola girişlerini kapatma.

Bu ssh-copy-id komut (içinde openssh istemcisi paket ve varsayılan olarak yüklenir) tam olarak bunu yapar:

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

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

Varsayılan kimlik "standart" ssh anahtarınızdır. Bilgisayarınızdaki iki dosyadan (genel ve özel anahtar) oluşur. ~/.ssh normalde adlandırılmış dizin identity, id_rsa, id_dsa, id_ecdsa veya id_ed25519 (ve aynı şey .pub), anahtarın türüne bağlı olarak. Birden fazla ssh anahtarı oluşturmadıysanız, kimliği belirtme konusunda endişelenmenize gerek yoktur, ssh-copy-ıd otomatik olarak seçecektir.

Kimliğiniz yoksa, aracı kullanarak bir kimlik oluşturabilirsiniz ssh-keygen.

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

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

Marcel'in cevabını beğendim. Bu komutu bilmiyordum. Ben her zaman üzerinde bulduklarımı kullanıyordum. Oracle web sitesi:

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

Hala buraya göndermeyi düşündüm, çünkü bu, neyin başarılabileceğinin iyi bir örneğidir kabuk kodu gücü ile ssh. Ama kullanarak ssh-copy-id kesinlikle doğru yapmak için daha güvenli bir yoldur!

Klasör varsa unutmayın .ssh zaten mevcut değil, yukarıdaki komut başarısız olur. Ek olarak, dosyayı oluştururken mümkün olan en düşük izni ayarlamak daha iyi olabilir (temel olarak yalnızca sahip 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"'

Grafik yöntemi

  1. Açık UygulamalarParolalar ve AnahtarlarKişisel Anahtarlarım.
  2. Anahtarınızı seçin ve ardından UzakGüvenli Kabuk için Anahtarı Yapılandır.

Set Up Computer for SSH Connection

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

ssh-import-id [launchpad account name]

Detaylar:

  1. Bir Launchpad hesabına ihtiyacınız var giriş yapın veya bir hesap oluşturun
  2. Giriş yaptıktan sonra, yanındaki düğmeyi tıklayın SSH anahtarları:
  3. Ortak anahtar dosyanızın içeriğini bu alana yapıştırın (açıklama dahil). Böyle bir anahtar şöyle görünür:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn

    Burada, ssh-rsa anahtarın bir RSA anahtarı olduğunu gösterir, AAAAB3Nza .... UyDOFDqJp gerçek anahtar ve lekensteyn yorum bu.

  4. Tuşuna basarak kaydedin Ortak Anahtarı İçe Aktar
  5. Her şey yolunda gittiyse, anahtarınız şimdi altında listelenmelidir SSH anahtarları:

Paket ssh-import-id uzaktan erişilmesi gereken makineye kurulması gerekiyor. Bu paket ile birlikte yüklenir openssh-server paket için önerilen bir paket olduğu için openssh-server. Bundan emin olduktan sonra ssh-import-id istemci makineye yüklendi, çalıştır:

ssh-import-id [launchpad account name]

Bu, genel anahtarı, sizi MITM saldırılarına karşı koruyan HTTPS üzerinden Launchpad sunucularından indirecektir.

Ubuntu Lucid'de ve daha önce, aynı şeyi aşağıdakilerle başarabilirsiniz:

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

Bu echo SSH anahtarıyla satırdan sonra fazladan bir satırsonu almak için komut gerekir.

özel bağlantı noktası için

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

-varsayılanları ~/ olarak değiştiriyorum.ssh/ıd_rsa.pub, başka bir anahtar istiyorsan, anahtarın yolunu sonra koy -ben

uyarı: Eğer -i yazmadıysanız, ~/ içinde bulunan tüm anahtarlarınızı kopyalayacaktır.ssh

İşte daha az güvenli, ancak çok basit bir çözüm (sunucular için önerilmez):

Hareket etmek ~/.ssh yeni makineye ve çalıştır ssh-add. bitti!

UZUN CEVAP:

  1. Eski makinede klasörü al ~/.ssh bir USB sürücüye veya istediğiniz başka bir depolama birimine.
  2. Yeni makinede klasörü altına yerleştirin ~ aka /home/$USER.
  3. Koşmak ssh-add. yeni makinede bitti.

ssh-copy-id aynen öyle yapar. Buradaki diğer cevaplardan bazılarının neden yanlış bilgi eklediğinden emin değilim. Yardım aşağıdakileri gösterir:

~$ ssh-copy-id -hUsage: /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

Ubuntu 18.04 istemcisinde CentOS 7.6 sunucusuyla aşağıdakileri denedim ve bir cazibe gibi çalıştı. Örnek, özel bir bağlantı noktası kullanarak gösterir 2222 ve bir ortak anahtar belirtme ~/.ssh/path-to-rsa.pub

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

Komutu çalıştırmadan önce, aslında -n komutun amaçlandığı gibi çalışacağını doğrulayan kuru bir çalışma yapmak için sonunda geçiş yapın. Bunu onayladıktan sonra, komutu yukarıdaki gibi tekrar çalıştırdım. -n değiştirmek.

AWS EC2 örneğinde olduğu gibi zaten bir ana bilgisayar anahtarınız varsa, bunu yapın

cat ~/.ssh/id_rsa.pub | ssh -i hostkey.pem hostname@hostaddress 'cat >> .ssh/authorized_keys && echo "Key copied" '

Bir dahaki sefere, sadece bunu yap:

ssh hostname@hostaddress