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?
Zaten farkındayım parola girişlerini nasıl kapatacağım .
ssh-copy-id
komutu ( openssh-client paketinde ve varsayılan olarak yüklenmiş) tam olarak şunu yapar:
ssh-copy-id [email protected]
varsayılan kimliğinizin genel anahtarını (diğer kimlikler için -i identity_file
kullanın) uzak Ana Bilgisayara kopyalar.
Varsayılan kimlik "standart" ssh anahtarınızdır. Normalde identity
, ~/.ssh
, id_rsa
, id_dsa
, id_ecdsa
, id_ed25519
dizininizdeki iki dosyadan (genel ve özel anahtar) oluşur Anahtar türüne bağlı olarak _ (ve .pub
ile aynı). 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, ssh-keygen
aracı ile bir tane oluşturabilirsiniz.
Ayrıca, sunucu varsayılan olandan farklı bir bağlantı noktası kullanıyorsa (22
) bu şekilde tırnak işareti kullanmalısınız ( source ):
ssh-copy-id "[email protected] -p <port-number>"
Marcel'in cevabını seviyorum. Bu komutu bilmiyordum. Her zaman bir buldum --- Sun web site :
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Onu buraya hala göndermeyi düşündüm, çünkü Shell kodunda ssh
gücüyle elde edilebilecek şeyin iyi bir örneğidir. Ancak, ssh-copy-id
kullanmak kesinlikle doğru şekilde yapmanın daha güvenli bir yoludur!
Eğer .ssh
klasörü 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"'
Ubuntu'da anahtarlarınızı Launchpad'den alabilirsiniz:
ssh-import-id [launchpad account name]
Detaylar :
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-rsa
, anahtarın bir RSA anahtarı olduğunu gösterir, AAAAB3Nza .... UyDOFDqJp
, gerçek anahtardır ve lekensteyn
yorumdur.
ssh-import-id
paketinin uzaktan kumandadan erişilmesi gereken makineye kurulması gerekiyor. Bu paket, openssh-server
paketi ile birlikte önerilir, çünkü openssh-server
için önerilir. ssh-import-id
'un yüklendiğinden emin olduktan sonra İ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
SSH anahtarının satırından sonra yeni bir satırsonu almak için echo
komutu gerekir.
özel bağlantı noktası için
ssh-copy-id -i "[email protected] -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
WARNING: -i yazmadıysanız, ~/.ssh konumunda bulunan tüm anahtarlarınızı kopyalar.
ssh-copy-id
tam 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>] ...] [[email protected]]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 2222
bağlantı noktasının kullanıldığını ve ~/.ssh/path-to-rsa.pub
konumunda bir genel anahtar kullanıldığını gösterir.
$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 [email protected]
Komutu çalıştırmadan önce, komutun amacına göre çalışacağını doğrulayan kuru bir işlem yapmak için sonunda -n
anahtarını kullandım. Onayladıktan sonra, komutu tekrar -n
anahtarı olmadan çalıştırdım.