Genel SSH anahtarlarınız size zor anlar yaşatıyor mu? Bu çözümlerden birini deneyin.
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, herhangi bir dosyayı içeren dosyayı gerektirir. belirli izinlere sahip olmak için uzak makinedeki genel anahtarları (ana dizininizdeki ".ssh/authorized_keys") kullanın. "Dünya çapında yazılabilir" olarak bilinen yazma izinleri diğer kullanıcılar için ayarlanmışsa çalışmaz. Dizin adı nokta (.) ile başladığından, siz kullanmadığınız sürece hiçbir ls listesinde görünmez. emretmek
ls -A.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 kullanın -l seçeneğiyle:
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 sağlamak 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
Herhangi bir genel anahtarı makinenizden manuel olarak kopyalayıp yapıştırabilirsiniz. ~/.ssh/.authorized_keys 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ın
ssh -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 genelindeki yapılandırma dosyası: /etc/ssh/sshd_config. Sahibi root olduğundan, düzenlemek için sudo kullanmanız gerekecek. Örneğin, Vim ile düzenlemek için:
sudo 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.