Yanıtlar:
Her kullanıcı için: (yerel makinelerinde) keypair'lerini kullanarak üretmelidirler ssh-keygen -t rsa
( bu seçenekler tavsiye edilmese de veya rsa
ile değiştirilebilir ). Daha sonra ortak anahtarlarının ( ) içeriğini oturum açmakta olan sunucuya koymaları gerekir .dsa
rsa1
id_rsa.pub
~/.ssh/authorized_keys
Aslında , otomatik olarak sizin için otomatik olarak yapan * nix'te bulunan bir komut dosyası olan ssh-copy- id'i ( Mac OS X'e de kolayca yerleştirilebilir) tercih ediyorum. Man sayfasından:
ssh-copy-id, uzaktaki bir makineye giriş yapmak için ssh kullanan bir komut dosyasıdır (muhtemelen bir giriş şifresi kullanarak), bu nedenle, birden fazla kimliğin akıllıca kullanılmasını sağlamadığınız sürece, şifre doğrulamanın etkinleştirilmesi gerekir)
Ayrıca, grup yazılabilirliğini gidermek için uzak kullanıcının evini (~ / .ssh ve ~ / .ssh / yetkili_keys) izinlerini de değiştirir (aksi takdirde uzak sshd yapılandırmasında ayarlanmışsa, oturum açmanızı engeller).
-İ seçeneği verilmişse, ssh-agent'ınızda herhangi bir anahtar olup olmadığına bakılmaksızın kimlik dosyası (varsayılan olarak ~ / .ssh / identity.pub) kullanılır.
Hum, anlamadım. Sadece bir anahtar oluşturun ve başlayın. :) NASIL Ek olarak, şifre ile giriş yapmayı yasaklayabilirsiniz. Örneğin / etc / ssh / sshd_config dosyasında:
PasswordAuthentication no
Bunu yapmak için oldukça yalındır - burada bulunacak basit bir yol var .
Ana noktalar:
ssh-keygen
. Bu sizin için ortak ve özel anahtarlar üretecektir.~/.ssh/id_rsa.pub
) kopyalayıp ~/.ssh/authorized_keys
uzaktaki makineye yapıştırın .Bunun, makinenizdeki özel anahtara erişimi olan herkese uzaktaki makineye aynı erişimi vereceğini hatırlatmak önemlidir, bu nedenle anahtar çifti oluşturulurken ekstra güvenlik için buraya bir parola girmeyi seçebilirsiniz.
Windows kullanıcıları için macun kurulumu
Başkalarının söylediklerini özetlemek için, SSH anahtarlarını ayarlamak kolay ve paha biçilmezdir.
Makinede Eğer sshing olacağı dan size anahtar çifti oluşturmak gerekir:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
İstendiğinde sadece girilip enter tuşuna basın ve istendiğinde bir parola girin - ideal olarak bu, hem ana bilgisayardaki normal giriş şifrenizden hem de SSH'niz olacak olanlardan farklıdır.
Ardından, yeni oluşturduğunuz anahtarı SSH'ye bağlanmak istediğiniz ana bilgisayara kopyalamanız gerekir . Çoğu Linux dağıtımının ssh-copy-id
bunu yapmak için bir aracı vardır :
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Dağıtımınız buna sahip değilse, anahtarı hedef ana bilgisayara kopyalamanız ve (muhtemelen var olan) .ssh/authorized_keys
dosyaya eklemeniz gerekir :
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
Son olarak, SSH anahtarlarından en fazla faydayı elde etmek için, bir SSH ajanı çalıştırmak isteyeceksiniz. Bir masaüstü ortamı (Gnome, KDE, vb.) Kullanırsanız, o zaman oturumunuzu kapatıp tekrar açmanız sizin için bir SSH aracısı başlatacaktır. Değilse, sizin kabuğuna RC dosyası (aşağıdaki ekleyebilir .bashrc
, .profile
vs.):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Bu bir kontrol listesi olarak tasarlanmıştır. Eğer biri onu nokta-noktadan takip ederse, şifresiz girişler için en sık kullanılanlar ele alınmalıdır. Bu noktaların çoğu başka yerlerde de belirtilmiştir; bu bir toplamadır.
Her makinede hesabın altında bağlantıların çıkacağı veya alınacağı bir ~/.ssh
dizin olmalıdır chmod 700
.
(Özel) anahtarı bir parola olmadan oluşturulmalıdır veya istemcilerin kullanması için bir parola taşıyan anahtarın deşifre edilmiş bir versiyonunu tutacak bir aracı başlatılabilir. Ajanı ile başla ssh-agent $SHELL
. Bulmam biraz zaman $SHELL
aldı. Bir aracı kullanmak istiyorsanız, çok yönlü ayrıntılar olduğu için kılavuz sayfasına bakın.
Unutmayın ki, varsayılan olarak zayıf (<2048 bit DSA) tuşları sshd'nin son sürümleri tarafından kabul edilmez.
Aşağıdaki istemci tarafı makinesinde yapılmalıdır köken bağlantı.
Özel anahtarınız uygun ~/.ssh/id_rsa
veya ~/.ssh/id_dsa
uygun şekilde yerleştirilmelidir . Başka bir ad kullanabilirsiniz, ancak özel anahtarı açıkça belirtmek için kaynak makinedeki ssh komutunda -i seçeneğine dahil edilmelidir.
Özel anahtarın olmalı chmod 600
.
Ana klasörün olup olmadığını kontrol edin chmod 700
.
Şimdi bir makinenin istek almasına izin vermek için . Yaygın bir model, bir yöneticinin size sahip olmadığınız bir makineye erişim sağlamasıdır (paylaşılan web barındırma gibi). Bu nedenle, ssh ile ilgili fikir, size herkese açık hesap veren herkese açık anahtarınızı sunmaktır . Bu nedenle, genellikle makineye istekleri almak için özel anahtarlar girmezsiniz. Ancak, bu makinenin ssh çıkışını da yapmasını istiyorsanız, yukarıdaki adımları uygulayan bir kaynak makinası gibi davranmanız gerekir.
~/.ssh/authorized_keys
hesabın altında adı verilen bir dosyaya yerleştirilmelidir . Bu hesap üzerinden bağlanmasına izin verilen diğer anahtarları da buraya yerleştirebilirsiniz. Vi'de iseniz ve anahtarı PuTTY'deki paste buffer'dan dosyaya yapıştırdığınızda özellikle zor bir şey şudur: anahtar bir "ssh-" ile başlar. Ekleme modunda değilseniz, ilk "s" ekleme moduna vi koyacak ve tuşun geri kalanı sadece iyi görünecektir. Ancak anahtarın başında bir "s" eksik olacak. Bunu bulmam günler sürdü.chmod 600 ~/.ssh/authorized_keys
. En azından gw olmalı.Diğerlerinin de söylediği gibi, kullanıcılarınız ssh-keygen ile kendi müşteri makinelerinde kendilerine anahtarlıklar yapmalı ve oturum açmak istedikleri makinedeki ~ / .ssh / yetkili_ anahtarlarına açık anahtar eklemelidir.
Yine de daha ayrıntılı bilgi için SSH, The Secure Shell'i tavsiye ederim .
Burada iyi bir tavsiye var, bu yüzden tekrar etmeyeceğim. Anahtarlarla oturum açmanıza izin vermek için bir sunucuyu ayarladıktan sonra, başkalarını da bu liner ile yapacak şekilde ayarlayabilirsiniz:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
Sadece ana dizininize gidin, uzak değişkeni bir veya daha fazla sunucu adı olarak tanımlayın ve bir kerede bir demet yapın. İstediği şifre, uzaktaki sunucu için ssh şifreniz olacak. Elbette for-loop olmadan basitleştirilmiş bir versiyon kullanabilirsiniz:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
UNUTMAYIN: Sadece genel anahtarlarınızı kopyalayın. Özel anahtarlarınızın, sudo'lu kişilerin kopyalayabileceği ve parolanızı zorla girebileceği bir sunucuda oturmasını istemezsiniz.