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. Sayfanın sol alt köşesinde yer alan zil ikonuna tıklayarak tarayıcı bildirimlerine abone olabilir, yeni yazılardan haberdar olabilirsiniz. Sevgiler…

Bu yazıyı beğendiniz mi?
1
Bana sosyal medya hesaplarımdan ulaşın

Evren Bal

Merhaba Dünya. Teknoloji delisi, farklı düşünmeyi seven, 1996'dan beri Internet canlısı, garajdan başarı hikayesi çıkartmayı becerememiş, çünkü garajdan hiç çıkmayan bir insanım. :) Bana buradan veya sosyal medyadan ulaşmanızı, birlikte her konuda fikir alışverişi ve beyin jimnastiği yapmayı heyecanla bekliyorum.

Soru ve Önerileriniz?