SSH Anahtarları

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Internet.png Bu yazı ArchWiki üzerinde bulunan SSH_Keys yazısının çevirisi temel alınarak hazırlanmıştır. Son güncelleme tarihi 16.06.2010
İngilizce olan ArchWiki sayfasında çeviri tarihinden sonra yapılan değişiklikler için bu bağlantıyı takip edin.

Sayfa özgün sayfaya göre güncelliğini yitirmişse, bu sayfayı düzenleyerek güncelleştirmeye yardım edin!

Tüm çeviri yazıları Özel:SayfayaBağlantılar/Şablon:çeviri_durumu sayfasında görüntüleyebilirsiniz.
Internet.png


Tango-dialog-warning.png Bu yazı güncelliğini yitirmiştir.
Lütfen yazıdaki eski bölümleri çıkartarak, güncel bilgiler ile yenileyerek bu yazıyı yeniden yardımcı olabilecek seviyeye getirmeye katkıda bulunun.
Tango-dialog-warning.png


Konu başlıkları

SSH Anahtarı Nedir?

SSH anahtarı (bir tane genel bir tane de özel) kullanarak, herhangi bir sunucuya veya sunuculara parolanızı girmeden rahatça giriş yapabilirsiniz.

Oluşturacağınız anahtarı parolasız kullanabilirsiniz; ancak kötü niyetli bir kullanıcı anahtarınızı (özel anahtarı) ele geçirirse bunu kullanabilir. Bu rehberde SSH anahtarlarınızı güvenli olarak nasıl kullanacağınız anlatılmaktadır.

SSH Anahtarlarını Oluşturmak

Öncelikle sisteminizde OpenSSH kurulu değilse kurun; zira kurulumda seçmemişseniz öntanımlı olarak kurulmamaktadır:

# pacman -S openssh

Anahtarlarınızı ssh-keygen komutunu vererek oluşturun:

$ ssh-keygen -b 1024 -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/kullanici/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kullanici/.ssh/id_dsa.
Your public key has been saved in /home/kullanici/.ssh/id_dsa.pub.
The key fingerprint is:
x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 kullanici@makine

Öncelikle oluşturulan anahtarın nereye konulacağını soracaktır. Öntanımlı olarak ev dizininizdeki .ssh dizinine konmaktadır. Farklı bir konuma yerleştirmek istiyorsanız bu dizini belirtin. Öntanımlı değeri kullanmanızda herhangi bir sakınca bulunmamaktadır. Daha sonra eğer anahtarlarınızı bir parola koyarak korumak istiyorsanız kendinize bir parola belirleyin. Eğer boş bırakırsanız anahtarlarınıza parola konulmayacaktır.

Yukarıdaki komut yardımıyla 1024 bit uzunluğunda (-b 1024) genel/özel bir dsa (-t dsa) anahtar çifti oluşturmuş oldunuz.

Eğer dsa yerine RSA anahtar çift üretmek istiyorsanız, dsa yerine -t rsa kullanın. RSA kullanacaksanız "-b" ile uzunluk belirtmenize gerek bulunmamaktadır; zira RSA için öntanımlı anahtar uzunluğu 2048 bittir ve oldukça yeterlidir.

Anahtarı uzaktaki sunucuya kopyalamak

SSH anahtarınızı oluşturduktan sonra uzaktaki sunucuya genel anahtarınızı aktarmanız gerekmektedir. OpenSSH'de öntanımlı olarak bu anahtarın ~/.ssh/authorized_keys dosyasına yazılması gerekmektedir.

$ scp ~/.ssh/id_dsa.pub kullanici@uzakmakine:

Bu komutla genel anahtar olan id_dsa.pub uzaktaki sunucudaki ev dizininize kopyalanır. (Sondaki : işaretine dikkat edin).

Daha sonra uzaktaki sunucuda ~/.ssh dizinini oluşturun ve authorized_keys dosyasına genel anahtarı yerleştirin.

$ ssh kullanici@uzaktakimakine
kullanici@uzaktakimakine's password:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_dsa.pub
$ chmod 600 ~/.ssh/authorized_keys

Son iki komutta uzaktaki makineye aktardığınız id_dsa.pub dosyası silindi (çünkü dosyaya yerleştirildi) ve authorized_keys için gerekli dosya izinleri tanımlandı.

Bu işlemleri yaptıktan sonra uzaktaki sunucudan çıkış yapıp tekrar giriş yaptığınızda anahtarınız için koyduğunuz parolayı soracaktır. Eğer parola koymamışsanız da doğrudan sunucuya giriş yapabilecektir.

$ ssh ras0ir@eventualis.org
Enter passphrase for key '/home/ras0ir/.ssh/id_dsa':

Eğer anahtarınız ile giriş yapamıyorsanız, .ssh dizininin ve authorized_keys dosyasının izinlerini kontrol edin.

Anahtar Parolasını Hafızada Tutmak

Artık uzaktaki sunucuya parola yerine ssh anahtarınızla giriş yapabilir duruma geldiniz. Ancak anahtar için her seferinde parola girmek, anahtar olmadan parola girmekle neredeyse aynı olduğu için pratik değil gördüğünüz gibi. Bu noktada imdadınıza "SSH agent" yetişecektir ve SSH anahtarınızın parolasının hafızada tutulmasını sağlayacaktır.

ssh-agent

ssh-agent OpenSSH ile öntanımlı gelen bir ssh aracıdır.

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2148; export SSH_AGENT_PID;
echo Agent pid 2148;

ssh-agent'ı çalıştırdığınızda kullanacağı ortam değişkenlerini göstermektedir. Bu değişkenleri kullanmak için, komutu eval ile çağırın.

$ eval `ssh-agent`
Agent pid 2157

/etc/profile dosyasına aşağıdaki komutu ekleyerek, oturum açtığınızda çalışmasını sağlayabilirsiniz:

# echo 'eval `ssh-agent`' >> /etc/profile

Bundan sonra ssh-agent çalışırken ssh-agent'a, özel bir anahtarınız olduğunu ve bu anahtarın nerede saklandığını belirtmeniz gerekiyor.

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/kullanici/.ssh/id_dsa:
Identity added: /home/kullanici/.ssh/id_dsa (/home/kullanici/.ssh/id_dsa)

Örnekte de gördüğünüz gibi anahtar parolası soruldu ve parola yazıldı. Şimdi uzaktaki sunucuya, anahtarınıza bir parola atamış olsanız bile herhangi bir parola yazmadan girebilirsiniz.

ssh-agent'ın tek dezavantajı açtığınız her konsolda ssh-add komutunu tekrar çalıştırmak zorunda kalmanızdır. Ancak bunun için keychain ve benzeri bir kaç çözüm yolu bulunmaktadır. keychain'i nasıl kullanacağınız aşağıda yazmaktadır.

GnuPG Agent Kullanarak

gnupg2 paketi içerisinde gelen GnuPG agent OpenSSH agent emulasyonu yapabilmektedir. Eğer GPG kullanıyorsanız, bütün anahtarlarınızı kontrol etmesi için gpg agent'ı kullanabilirsiniz. Ayrıca "PIN entry" ve parola yönetimini beğenebilirsiniz.

GPG agent'ı SSH anahtarlarınızla kullanmak için gpg-agent'ı --enable-ssh-support seçeneği ile çalıştırmalısınız. Örnek: (dosyayı çalıştırılabilir yapmayı unutmayın)


/etc/profile.d/gpg-agent.sh
#!/bin/sh

envfile="${HOME}/.gnupg/gpg-agent.env"
if test -f "$envfile" && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
    eval "$(cat "$envfile")"
else
    eval "$(gpg-agent --enable-ssh-support --daemon --write-env-file "$envfile")"
fi

gpg-agent'ı çalıştırdığınızda ssh-add kullanarak anahtarlarınızı tıpkı ssh-agent'taki gibi onaylatabilirsiniz. Onaylanan anahtarlar ~/.gnupg/sshcontrol dosyasında saklanmaktadır. Anahtarınızı onayladıktan sonra, her parola girmeniz gerektiğinde "PIN entry" menüsü karşınıza gelecek ve parolanızı soracaktır. Parola önbelleği süresini ~/.gnupg/gpg-agent.conf dosyasında belirleyebilirsiniz. Örneğin parolayı 3 saat hafızada tutmak için dosyaya şunları ekleyebilirsiniz:

 # Cache settings
 default-cache-ttl 10800
 default-cache-ttl-ssh 10800

Bu dosyada ayarlayabileceğiniz diğer seçenekler ise PIN entry için kullanılacak arayüz (GTK, QT veya ncurses), keygrab vb.

 # Ortam dosyası
 write-env-file /home/username/.gnupg/gpg-agent.info
 
 # Klavye kontrolü
 #no-grab
   
 # PIN entry programı
 #pinentry-program /usr/bin/pinentry-curses
 #pinentry-program /usr/bin/pinentry-qt4
 pinentry-program /usr/bin/pinentry-gtk-2

keychain kullanımı

Keychain bir veya birden fazla özel anahtarı kontrol edebilir. Çalıştırdığınız zaman özel anahtarlar için parola sorar ve bu parolayı saklar. Böylece her defasında parola yazma zahmetinden kurtulursunuz.

keychain'i kurmak için şu komutu girin:

# pacman -S keychain

Aşağıdaki dosyayı oluşturun ve çalıştırılabilir yapın:

/etc/profile.d/keychain.sh
eval `keychain --eval --nogui -Q -q id_rsa`

veya


/etc/profile.d/keychain.sh
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_dsa
[[ -f $HOME/.keychain/$HOSTNAME-sh ]] && source $HOME/.keychain/$HOSTNAME-sh



Lamba.png
İpucu:
Eğer daha fazla güvenlik istiyorsanız -Q parametresini --clear ile değiştirin, ancak bu seçenek daha zahmetli olacaktır.


Eğer gerekiyorsa, ~/.ssh/id_dsa'yı ~/.ssh/id_rsa ile değiştirin. Bash harici bir kabuk kullanıyorsanız, keychain --help veya man keychain'i inceleyerek diğer kabuklarla nasıl kullanacağınızı öğrenebilirsiniz.

Gerekli düzenlemeleri yaptıktan sonra yeni bir konsol açın. Keychain çalışacak ve belirttiğiniz özel anahtar için parolanızı soracaktır.

ssh-agent ve x11-ssh-askpass kullanımı

Her Xsession çalıştırdığınızda ssh-agent'ı çalıştırmanız gerekmektedir. X oturumu sona erdiğinde ssh-agent da kapanacaktır.

x11-ssh-askpass paketini kurduğunuzda, her Xsession çalıştırdığınızda parolanızı sorabilir:

# pacman -S x11-ssh-askpass

~/.xsession dosyanıza şunları ekleyin:

eval `/usr/bin/ssh-agent`
SSH_ASKPASS=/usr/lib/openssh/x11-ssh-askpass ssh-add < /dev/null
# then the end of the file with for example "exec dwm"

GNOME Keyring

Eğer GNOME masaüstü kullanıyorsanız, GNOME Keyring aracını SSH agent olarak kullanabilirsiniz. Kurulumu ve ayarlanması basittir, öncelikle kurun:

# pacman -S gnome-keyring

Daha sonra anahtarlarınızı ekleyin:

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/kullanici/.ssh/id_dsa:

Herhangi bir sunucuya bağlandığınızda anahtarınız bulunacak ve sizden parolanız istenecektir. GNOME keyring'in anahtarı hatırlama/kilitleme seçeneğini kullanarak bir daha parola yazmanıza gerek kalmayacaktır.

PuTTY

PuTTY ssh-keygen tarafından oluşturulan anahtarları doğrudan kullanamamaktadır. Özel anahtarınızı PuTTY ile kullanabilmek için PuTTYgen kullanarak PuTTY'nin biçimine dönüştürmeniz gerekmektedir. PuTTYgen'i buradan indirebilirsiniz.

Şu aşamaları takip ederek PuTTY'de anahtarlarınızı kullanabilirsiniz.

  1. ssh-keygen kullanarak 1024 bit RSA anahtar çifti oluşturun.
  2. Genel anahtarı ~/.ssh/authorized_keys dosyasına koyun.
  3. Özel anahtarı Windows kullanan bilgisayara kopyalayın.
  4. Özel anahtarı PuTTYgen ile açıp Save private key seçeneğine tıklayın. Böylece anahtar PuTTY biçimine dönüştürülür.
  5. PuTTY'i çalıştırın. SSHAuth menüsüne gidin ve özel anahtarı seçin.

Harici Bağlantılar / Bilgi

Kişisel araçlar
GOOGLE
Diğer dillerde