Root yetkisi olmayan kullanıcı, SSH bağlantısını, SSH anahtarı ile nasıl kurabilir?

İster Digital Ocean, ister AWS’de olsun VPS’imize SSH anahtarı ile bağlantı kurmak çok da zor değil, fakat yeni bir kullanıcı açayım ve işlerimi root yetkisi olmadan yapayım, veya arkadaşıma da burada bir hesap açayım dediğinizde işler karışıyor. Yeni oluşturduğunuz kullanıcılar VPS’i oluştururken kullandığınız SSH anahtarı ile bağlantı sağlayamıyorlar.


Root yetkisi olmayan kullanıcı, SSH bağlantısını, SSH anahtarı ile nasıl kurabilir?

Her ne kadar başlığı beğenmesem de, böyle teknik bir konuyu daha edebi ifade etmenin bir yolunu bulamadım.

Bugün Digital Ocean’da VPS kurmak başlıklı bir yazı yazdım ve bundan sonraki yazılarda devamında yapılacakları işleyecektim, fakat başlıktaki konuyu ara bilgi olarak yazmamın faydalı olacağını düşündüm.

İster Digital Ocean, ister AWS’de olsun VPS’imize SSH anahtarı ile bağlantı kurmak çok da zor değil, fakat yeni bir kullanıcı açayım ve işlerimi root yetkisi olmadan yapayım, veya arkadaşıma da burada bir hesap açayım dediğinizde işler karışıyor. Yeni oluşturduğunuz kullanıcılar VPS’i oluştururken kullandığınız SSH anahtarı ile bağlantı sağlayamıyorlar.

Bu yazıda yeni bir kullanıcı oluşturup, SSH ile bağlantı kurabilmesini sağlayacağız.

Ubuntu Linux’da yeni kullanıcı nasıl oluşturulur?

Kullanılması gereken komut genel olarak şu şekilde;

$ sudo useradd -s /path/to/shell -d /home/{dirname} -m -G {secondary-group} {username}
$ sudo passwd {username}

Burada kullanıcı adıyla birlikte varsayılan shell tipini, kullanıcı kök dizinini, varsa ikinci grubu gibi bilgileride veriyoruz. Örnek olarak evrenbal kullanıcısını ekleyelim.

$ sudo useradd -s /bin/bash -d /home/evrenbal/ -m -G sudo evrenbal
$ sudo passwd evrenbal

Burada

  • -s /bin/bash /bin/bash yolundaki bash shell’i varsayılan olarak atadık
  • /home/evrenbal/ kullanıcının kök/ana dizinini belirledik
  • -m bu dizin hali hazırda olmadığı için oluşturulmasını sağladık. (Eğer var olan bir dizin kullanılıyorsa gerek yok)
  • -G sudo sudo grubuna ekledik, böylece kullanıcımız sudo komutunu kullanarak yönetici yetkilerine erişim sağlayabilecek
  • passwd evrenbal komutu ile de evrenbal için şifre belirliyoruz

Kullanıcımız oluşturuldu, peki SSH anahtarı ile bağlanmasını nasıl sağlayacağız. Bunun için iki yöntem var;

Kolay Yöntem

Kullanıcının kök dizininde .ssh isimli bir klasör oluşturup, root hesabının .ssh bilgilerini oraya kopyalamak. Root kullanıcısının (veya ssh anahtarı ile bağlanmaya yetkili kullanıcının; örneğin AWS’de ubuntu kullanıcısı) kök dizinindeyken şu komutları çalıştırın.

sudo mkdir /home/evrenbal/.ssh/
sudo cp .ssh/* /home/evrenbal/.ssh
sudo chmod 700 /home/evrenbal/.ssh
sudo chmod 600 /home/evrenbal/.ssh/authorized_keys
sudo chown -R evrenbal:evrenbal /home/evrenbal/.ssh/

Bu komutlarla evrenbal için bir .ssh klasörü oluşturup, geçerli ssh anahtarını o kök dizine kopyadık. Klasör ve dosyanın izinlerini ayarladıktan sonra sahiplik bilgisini düzenledik. Artık root için kullandığımız ssh anahtarı evrenbal için de geçerli.

Tabi bu pek güvenli bir yol değil. Özellikle de hesabı kendiniz için değil bir başkası için açıyorsanız.

Güvenli ve Doğru Yöntem

Bunun için bir SSH anahtarı oluşturup bunu sunucuya göndermeniz gerekiyor. Bazı sağlayıcılar kurulum aşamasında da kendi SSH keyinizi oluşturmanızı isterken (Digital Ocean gibi), bazıları bunu sizin adınıza yapabiliyor (AWS). Eğer daha önce SSH Anahtarı oluşturmadıysanız Putty Gen ile pratik bir şekilde yapabilirsiniz. (Sisteminizde OpenSSH yüklüyse komut istemcisinden de yapabilirsiniz ama yine de PuttyGen candır 🙂 )

Generate’e basıp, mouse’u rasgele hareket ettirdiğinizde SSH anahtarınız oluşacaktır.

Private Key’i bilgisayarınıza kaydedip bunu SSH istemcinize tanımlayacaksınız. İşin o kısmını zaten root kullanıcısından biliyorsunuz. Gelelim sunucu tarafında ne yapacağımıza. PuttyGen’le oluşturduğunuz “Public Anahtarı” kopyalayıp kullanıcı .ssh dizinine yazmanız gerekiyor.

$ sudo mkdir /home/evrenbal/.ssh/
$ sudo chmod 0700 /home/evrenbal/.ssh/
$ sudo -- sh -c "echo 'ssh-rsa AAAAB3NzaC1yc2EAAAA...........' > /home/evrenbal/.ssh/authorized_keys"
$ sudo chown -R evrenbal:evrenbal /home/evrenbal/.ssh/

Yukarıdaki örneğe benzer şekilde evrenbal için .ssh dizini oluşturduk, kopyaladığımız ssh anahtarını o dizin içindeki authorized_keys dosyasının içine yazdık ve .ssh klasörü ve altındaki dosyaların sahiplik bilgisini evrenbal olarak düzelttik.

Artık evrenbal kullanıcı ve bu yeni oluşturduğumuz ssh anahtar ile güvenli bir şekilde bağlantı gerçekleştirebiliriz.

Sorularınız varsa veya fikir alışverişi yapmak isterseniz yorumlardan, Twitter , LinkedIn veya Instagram üzerinden ulaşabilirsiniz. Sevgiler…

Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.

Bir soru, öneri ya da yorumunuz mu var?

Evren Bal

Ben Evren BAL

1996'dan beri ‘Internet canlısıyım!’

Evren Bal Hakkında daha fazla bilgi.

Tanışmak isterseniz hemen sosyal medyadan iletişime geçebilirsiniz.

Bana Ulaşın

Bana Ulaşın

  • Bir sorunuz mu var?
  • Yazıda bir hata mı farkettiniz?
  • Sayfa ile ilgili bir öneriniz mi var?
  • Yazmamı önereceğiniz bir konu mu var?

Lütfen iletişim formunu kullanarak veya sosyal medya hesaplarımdan bana ulaşın.

Digital Ocean Logo

VPS sunucusu denemek ister misiniz?

Digital Ocean'a referans bağlantımdan kayıt olarak yeni oluşturacağınız hesabınızı 60 gün geçerli 100$ kredi ile açabilirsiniz. Bu miktar yüksek performanslı VPS'leri bile denemeniz için yeterlidir.

Yapacağınız onca kurulumun boşa gitmemesi için benim tavsiyem uzun vadede kullanabileceğiniz özellik ve maliyetlerde bir sunucu oluşturmanızdır.

Ücretsiz 100$ kredi bağlantısı

60 günlük denemeniz sonunda eğer devam etmek istemezseniz hiç bir ücret ödemeyeceksiniz. Hizmeti kullanmaya devam etmek isterseniz harcamanız 25$'a ulaştığında benim hesabıma da 25$ kredi yüklenecektir.

Diğer bir deyişle, siz 100$ ücretsiz krediyi her halükarda kazanırken, daha sonra ücretli devam etmeye karar verirseniz ben de 25$ kredi kazanacağım.

Copyright © 2022 - Evren BAL