SSH Agent Nedir? Nasıl Kullanılır?

SSH ve SSH Anahtr Kullanımı başlıklı yazılarda genel işlemlerden ve kullanılacak komutlardan bahsetmiştim.

AA

Bu ve sonraki SSH Tunnel konulu yazı ile SSH kapsamı dahilindeki içerikleri tamamlamış olacağım. Elbette bir eksiklik ya da geliştirilmesini istediğiniz bir konu olursa süreç içerisinde değerlendirip örneklendirmelerle birlikte yazıya dökmek isterim.

SSH Agent

SSH anahtar seti oluşturma aşamasında, hatırlarsanız ssh-keygen ile işlemlere başladığımızda oluşturulacak key anahtar ile ilişkili olarak bizden bir passphrase istenmekteydi. Ön tanımlı olarak herhangi bir şifre belirtmeden ilerlediğimiz adımların aksine, güvenlik düzeyini artırmak amacıyla şifre tanımlamış olduğumuzu varsayalım. Hatta senaryoyu biraz daha komplike hale getirelim ve oluşturduğumuz her anahtar setinde farklı bir passphrase girdiğimizi düşünelim. Esasında SSH anahtarı1 tanımlamamızın amacı şifresiz ve güvenli erişimler oluşturmak iken süreci aslında benzer bir yapıda tutmuş olduk, değil mi? İşte, SSH Agent (ssh-agent) tam da bu noktada bize yardımcı olmakta2.

SSH Agent add

SSH Agent, ssh-keygen ile oluşturduğumuz anahtar seti içerisinde, gizli anahtarının (private key) parolasını (passphrase) hafızasına alarak her bağlantı esnasında şifre girme sürecini ortadan kaldırmakta. Peki, bu durumda şifre tanımlamanın mantığı nedir3? Şöyle ki, anahtar setlerine dışarıdan bir erişim sağlanması durumunda passphrase girilmeden anahtarlar kullanılamayacaktır. Her anahtar için ayrı bir passphrase kullanılması durumunda yönetimleri güçleşeceği için oturum süresince ssh-agent tarafından şifreler geçici olarak belleğe kayıt edilir ve kullanılır4. Belleğin silinmesi/oturumun sonlanmasıyla kayıtlı şifreler de silinecektir. Bu sayede, çoklu/ardışık ve sürekli işlemlerde bağlantı süreçleri ssh-agent ile hem daha güvenli hem de pratik bir şekilde gerçekleştirilebilir5. SSH Agent, OpenSSH kapsamında olduğu için harici olarak yüklenmesine gerek olmamakta. O halde örnek kullanıma geçebiliriz. Önce ssh-agent’ı çalıştıralım.

eval 'ssh-agent' -s

Komut ile birlikte SSH_AUTH_SOCK ve SSH_AGENT_PID ortam değişkenleri ekranımıza dökülecektir. Bu değişkenler üzerinden kullanım işlemine başlayabiliriz. Aşağıdaki kod uygulandıktan sonra Identity added: bildirimi alacağız.

ssh-add

Ön tanımlı olarak ekleme işlemi id_rsa anahtarı üzerinden gerçekleşecektir. Farklı bir anahtar kullanmak için aşağıdaki kod üzerinden ilerleyebilirsiniz.

ssh-add -K ~/.ssh/key

Kodu onayladığınızda anahtar oluştururken tanımladığımız passphrase’i girmemiz istenecek. Doğru bir şekilde passphrase bildiriminin ardından gizli anahtarımızın (private key) şifresi ssh-agent belleğine yüklenmiş olacak. Bunu tüm anahtar çiftleriniz için yapabilirsiniz. Bu sayede kriptolanmış ssh-key için şifresiz bir şekilde hızlıca sunucu erişimlerini gerçekleştirebilirsiniz. Unutmayın, yazının başında da belirttiğim gibi, bellekle birlikte ssh-agent tanımlaması da temizlenecektir ve bir sonraki erişim süreçlerinde ssh-agent’ın tekrar başlatılması gerekmektedir. Ancak, otomatik sistem değişikliklerinde ssh-agent’in kendiliğinden başlamasını istersek şöyle bir düzenleme yapabiliriz.

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

Peki, ssh-agent belleğindeki şifre tanımlamalarını biz temizlemek istersek?

ssh-agent -D

Evet, hepsi bu kadar. Daha detaylı bilgi için man ssh-agent komutunu kullanabilirsiniz.