SSH ile bir sunucuya her eriştiğinizde şifre girmek istemeyebilirsiniz. Bunun için açık anahtarlı şifreleme adı verilen bir yöntem kullanılmaktadır.
Önce local bilgisayar için (bağlanılmak istenilen remote, bağlanmak isteyen client) private ve public anahtar çifti oluşturmanız gerekiyor. Bunun için ssh-keygen aracını kullanabilirsiniz.
Private ve public anahtarı oluşturduktan sonra (Unix-Linux da bu anahtar dosyalarını ~/.ssh klasörü altında bulabilirsiniz) public anahtar içeriğini uzak sunucuya tanıtmanız gerekmektedir. Genellikle public key, ~/.ssh/authorized_keys dosyası içine eklenmektedir. Uzak sunucuya public anahtarınızı tanımlattığında, artık ssh ile şifre girmeden uzak sunucuya bağlanabilirsiniz.
Local sunucuda aşağıdaki komut ile anahtar oluşturmaya başlayabilirsiniz :
ssh-keygen -t rsa
aşağıdakile benzer aşamalardan geçmeniz gerekir. passphrase boş bırakmanız gerekir aksi takdirde bu şifre ssh yaptığınız zaman istenmektedir.
Generating public/private rsa key pair.
Enter file in which to save the key (/~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Your identification has been saved in ~/.ssh/id_rsa
Your public key has been saved in ~/.ssh/id_rsa.pub
Oluşturulan id_rsa private, id_rsa.pub ise public anahtardır.
Public anahtarı uzaktaki sunucudaki sunucuya ~/.ssh/authorized_keys dosyasına eklemeniz gerekir. Bunun için aşağıdaki komutu kullanabilirsiniz :
cat ~/.ssh/id_rsa.pub | ssh uzak_kullanıcı_adı@uzak_sunucu 'cat >> ~/.ssh/authorized_keys'
Yukarıdaki komut id_rsa.pub içeriği alır, ssh ile uzaktaki sunucudaki authorized_keys dosyası içine ekler.