Özel bir anahtar kullanarak uzak sunucuya ssh nasıl yapılır?


77

İki sunucum var. Her iki sunucu da CentOS 5.6’da. Sahip olduğum özel bir anahtarı kullanarak Sunucu 1'den Sunucu 2'ye SSH yapmak istiyorum (OpenSSH SSH-2 Özel Anahtar).

Unix üzerinden nasıl yapacağımı bilmiyorum. Fakat Macte'yi kullanarak pencerelerde yaptığım, OpenSSH özel anahtarımı macun genine beslemek ve PPK formatında özel bir anahtar oluşturmaktı.

Ancak, sunucu 2'den SSH üzerinden bazı komutları uygulayacak olan sunucu 1'den bir bash betiği oluşturacaktım.

Sunucu 1'deki özel anahtar dosyamı kullanarak Sunucu 2'ye nasıl SSH yapabilirim?


1
Birçok Linux ve Unix sisteminde, bu işlem kullanılarak yapılabilirssh-copy-id user@machine
Paul Tomblin

Yanıtlar:


66

SSH ortak anahtarınıza ve ssh özel anahtarınıza ihtiyacınız olacak. Anahtarlar ile oluşturulabilir ssh_keygen. Özel anahtar Sunucu 1'de tutulmalı ve ortak anahtar Sunucu 2'de depolanmalıdır.

Bu, openssh'ın sayfasında tam olarak açıklanmıştır, bu yüzden çoğunu alıntılayacağım. 'Doğrulama' bölümünü okumalısınız. Ayrıca openSSH kılavuzu gerçekten yardımcı olmalıdır: http://www.openssh.org/manual.html

Lütfen ssh ile dikkatli olun, çünkü bu sunucunuzun güvenliğini etkiler.

Kimden man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

Bu, özel anahtarınızı .ssh içindeki ana dizininize kaydedebileceğiniz anlamına gelir. Başka bir olasılık da, ssh'ye -iözel bir kimlik dosyasını kullanması için parametre anahtarı aracılığıyla söylemektir . Ayrıca man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

Bu özel anahtar içindir. Şimdi genel anahtarınızı Sunucu 2'ye tanıtmanız gerekiyor. Yine bir teklif man ssh:

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

Bunu elde etmenin en kolay yolu, dosyayı Sunucu 2'ye kopyalayıp yetkili_keys dosyasına eklemektir:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

Ssh daemon için açık anahtar yoluyla yetkilendirmeye izin verilmelidir, bkz man ssh_config. Genellikle bu config dosyasına aşağıdaki ifadeyi ekleyerek yapılabilir:

PubkeyAuthentication yes

10
Merhaba, çaba için teşekkür ederim ama sadece buna ihtiyacım var. ssh -i keyfileTeşekkürler!
Aivan Monceller 25:11

8
Tuşuna sunucuya yüklemeyi için en kolay ve tavsiye edilen bir yol oluşturduktan sonra beraberdir ssh-copy-id: ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com.
Gilles

5
ssh-addBağlanmakta olduğunuz bilgisayarda bir anahtar oluşturduktan sonra kaçmanız gerektiğinden herkesin bahsetmeyi unutması ilginçtir . çoğu insan için baş ağrısına neden olan budur.
Luka

3
ÖNEMLİ NOT: İstemci birçok özel anahtara sahip olabilir ve kendi özel ~ / .ssh / config dosyasındaki isteğe bağlı bir adı temel alarak seçim yapabilir; burada Host = isteğe bağlı bir ad verir, HostName bir ad veya IP adresi verir, Port = hedef port, Kullanıcı, hedef kullanıcı adıdır ve ItentityFile = özel anahtar dosyasına işaret eder. Bu özellik kümesi genellikle göz ardı edilir ve aksi halde ad alanında çarpışan birden fazla anahtar çiftinin olması gibi birçok yapılandırma sorununa çözümdür.
Richard T,

1
Kullanarak SSH ile bağlantı kurmaya çalıştığımda $ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.com, hatayı myuser@ssh.myhost.com: Permission denied (publickey).alıyorum, anahtar yarattım, yerel olarak kullandım ssh-addve uzak sunucuda yetkili bir anahtar olarak ekledim.
Aaron Franke

21

Anahtarınızı buraya eklemek için -sh seçeneğiyle ssh kullandım.

Arg1, arg2'yi .sh dosyasıyla geçirmek istiyorsanız, sadece .sh dosyasından sonra iletin ve ayırmak için bir kullanım alanı kullanın.

ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"


1
Doğru izinleri ayarlamayı unutmayın:chmod 600 home/avr/new.pem
Brian Haak,

16

Yapmanız gereken ilk şey, anahtarları oluşturmak için keygen komutunu çalıştırdığınızdan emin olun:

ssh-keygen -t rsa

Ardından anahtarı uzak sunucuya itmek için bu komutu kullanın, sunucu adınızla eşleşecek şekilde değiştirin.

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

6
en diyelim ssh-copy-id user@hostnameyerine
andrej

7

id_[rd]sa.pubKaynak makinenizin genel anahtarını ( sshing yaptığınız yer) ~/.ssh/authorized_keyshedef sunucunun ssh'ına eklemek istediğiniz kullanıcı adı dosyasına ekleyin . Genel anahtarı kaybettiyseniz, ile yeni bir tane oluşturmak istersiniz ssh-keygen. Bunun için varsayılan argümanları kullanmak çoğu amaç için uygun olmalıdır. Daha ayrıntılı talimatlara ihtiyaç duyarsanız, google olabilir binlerce öğretici vardır.


4

ssh-copy-id - uzaktaki bir makineye girişleri yetkilendirmek için yerel olarak mevcut tuşları kullanın

ssh-copy-idAnahtar çiftinin (birlikte oluşturulmuş ssh-keygen) bulunduğunu varsayarak, Sunucu 1’de kullanın :

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

Artık özel anahtarı kullanarak ssh ile Sunucu 2'ye ssh yapabilmelisiniz

ssh -i ~/.ssh/id_rsa user@server2_hostname

Aslında, cat ~/.ssh/authorized_keysSunucu 2’yi kontrol ederseniz, ortak anahtarın sizin için eklendiğini görürsünü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.