SSH, uzaktaki makinelere bağlanmak için kullanışlı bir araçtır, ancak Linux’ta genel anahtarınızla ilgili “İzin reddedildi (publickey)” hatasıyla karşılaşabilirsiniz. Neyse ki, sorunu gidermek için deneyebileceğiniz bazı kolay düzeltmeler var.
Genel Anahtar Nedir?
Linux’ta SSH için bir anahtar çifti oluşturduğunuzda size bir genel anahtar ve bir özel anahtar verilecektir. Özel anahtar, yakından korunan bir sır olarak yanınızda kalacaktır, ancak genel anahtar, parola olmadan oturum açmanıza izin vermek için uzak sunuculara iletilecek olandır. Yerel SSH istemciniz, bağlandığınızda genel anahtarı özel anahtarla eşleştirecektir.
Bu yöntemin avantajı yalnızca genel anahtarı vermenizin gerekmesidir. Özel anahtarınızı gizli tuttuğunuz sürece, genel anahtarınızın ele geçirilmesi durumunda bu sizi güvende tutacaktır. Genel anahtar tek başına işe yaramaz.
Açık kaynak dünyasında en yaygın kullanılan SSH istemcisi ve sunucusu olan OpenSSH, uzak makinedeki genel anahtarları içeren dosyanın belirli izinlere sahip olmasını gerektirir (ana dizininizdeki “.ssh/authorized_keys”). “world-writable” olarak bilinen yazma izinleri diğer kullanıcılar için ayarlanmışsa çalışmaz. Dizin adı nokta (.) ile başladığından, ls -A komutunu kullanmadığınız sürece hiçbir ls listesinde görünmez.
Dosya başka bir bilgisayardan kopyalandıysa veya kendiniz oluşturduysanız izinler değişebilir. Neyse ki bunu düzeltmek kolaydır.
Genel Anahtar İzinlerinizi Kontrol Edin
Yetkili_anahtarlar dosyası, uzak makinedeki hesabınızda oturum açabilmek istediğiniz istemcilerin tüm genel anahtarlarını içeren düz metinli bir dosyadır. İzinlerini görmek için ls komutunu -l seçeneğiyle birlikte kullanın:
ls -l ~/.ssh/authorized_keys
Bu, sahip, grup ve diğer kullanıcılar için izin ayarlarını gösterecektir. Dizedeki son altı harfe dikkat edin. Bunlarda “w” harfini görüyorsanız bu, grubun veya başkalarının ona yazabileceği ve bu durumun onu güvensiz hale getirebileceği anlamına gelir.
Bu dosyanın sizin tarafınızdan yazılabilir olmasını isteyeceksiniz, ancak grup veya başkaları tarafından yazılmasını istemeyeceksiniz. Doğru kullanıcılara erişim vermek için izinleri chmod ile değiştirebilirsiniz.
İki yolu vardır: sayısal ve sembolik olarak.
Sayısal yol daha kısadır ancak sekizlik izin sayılarını ezberlemeniz gerekir:chmod 700 ~/.ssh/authorized_keys
Sembolik yöntem daha anımsatıcıdır:chmod go-w ~/.ssh/authorized_keys
Anahtarları ssh-agent Kullanarak Güvenle Kopyalayın
Makinenizdeki genel anahtarları manuel olarak kopyalayıp ~/.ssh/.authorized_keys dosyasına yapıştırabilirsiniz, ancak ssh-agent programını kullanmak herhangi bir izin hatası olasılığını azaltacaktır.
Ssh-agent’ı başlatmak için şu komutu kullanın:eval "$(ssh-agent-s)"
Uzak bir sunucuda ssh-agent kullanarak oturum açmak için ssh ile -A seçeneğini kullanınssh -A [email protected]
Uzak Sunucunun sshd Ayarlarını kontrol edin
Bu çabalardan herhangi biri başarısız olursa, root erişiminiz varsa uzak makinedeki sshd sunucusunda bazı yapılandırma değişiklikleri yapmanız gerekebilir. Değilse, SSH bağlantı sorunlarını çözmenize yardımcı olması için büyük olasılıkla sistem yöneticinizle iletişime geçmeniz gerekecektir. Bu son çare yöntemidir çünkü sisteminizi daha az güvenli hale getirebilir.
Sshd için sistem çapındaki yapılandırma dosyası /etc/ssh/sshd_config’tir. Sahibi root olduğundan, düzenlemek için sudo kullanmanız gerekecek. Örneğin, Vim ile düzenlemek içinsudo vim /etc/ssh/sshd_config
Authorized_keys dosyanız herkes tarafından yazılabilir olsa bile sshd’nin oturum açmanıza izin vermesini sağlamak için bu dosyada “StrictModes” seçeneğini “no” olarak ayarlayın.
Kaydedin ve SSH sunucusunu yeniden başlatın:sudo systemctl restart sshd.service
Artık SSH Genel Anahtar İzinleri Hatalarını Düzeltebilirsiniz
Uzak sistemlerde SSH ortak anahtarlarıyla ilgili hatalarla karşılaşabilirsiniz. Neyse ki, çoğu zaman tek yapmanız gereken, dosya izinlerini kontrol edip, anahtarınızı başka kimsenin göremeyeceği şekilde ayarlamaktır. Daha güvenilir bağlantılar için ssh-agent’ı da kullanabilirsiniz. Son çare olarak SSH sunucusunu daha az katı hale getirebilirsiniz.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.