-

SSH Anahtar Çifti Oluşturma ve Kullanımı

SSH (Secure Shell), lokal ya da global ağ (güvensiz kanal) üzerinde bulunan bir sunucuya erişim sağlamaya ve uzak sunucu üzerinde komut çalıştırma gibi işlemleri gerçekleştirmeye olanak sağlayan bir uzak sunucu bağlantı protokolüdür (güvenli kanal).

Linux (VPS-VDS) ve macOS işletim sistemlerinde SSH için varsayılan olarak OpenSSH programı kurulu olarak bulunuyor.

Komut satırından ssh ile bir sunucuya bağlanmak ssh kullaniciadi@host yazmak yeterlidir. İlk bağlantıda IP adresine bağlı olarak ECDSA anahtarı ~/.ssh/known_hosts kaydı yapılır ve bir defaya mahsus bağlantı onayı alınır.

SSH Anahtarlı Kimlik Doğrulama

VPS-VDS sistem kurulumunda herhangi bir SSH anahtarı kullanmadıysanız kullanıcı girişi paralo ile gerçekleşecek. Daha güvenli bağlantı için SSH anahtarı kullanmak önerilir.

SSH anahtarı ile bağlanma için istemci bilgisayarımızda anahtar eşleri (public/private) oluşturmamız oluşturacağız. Bunun için terminalde ssh-keygen -t rsa komutunu kullanacağız.

ssh-keygen

~/.ssh/ dizinimiz altında id_rsa (gizli anahtar, kimseye verilmeyecek) ve id_rsa.pub (açık anahtar) olarak iki dosyamız olacak. VPS kurulumunun ilk aşamasında açık anahtarı (id_rsa.pub) belirterek anahtarla girişi de aktif edebiliriz. Açık anahtarı görüntülemek için cat ~/.ssh/id_rsa.pub komutunu kullanabiliriz. Oluşturduğumuz bu anahtar çiftini istersek başka bilgisayarlarda da kullanabiliriz.

cat-id-rsa

VPS kurulum aşamasında aşağıdaki gibi varsa açık anahtarımızı yazarak SSH ile bağlantıyı etkinleştirebiliriz.

vps-ssh

Eğer kurulumda açık anahtarımızı kullanmadıysak sonradan eklemek için istemcide aşağıdaki komutu kullanabiliriz.

cat ~/.ssh/id_rsa.pub | ssh hasan@104.248.91.14 "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Komutu çalıştırmak için parola kullandıktan sonra diğer girişlerimiz SSH key ile olacaktır. Ancak "-o PubkeyAuthentication=no" parametresi ile giriş paralo kullanarak giriş yapabiliriz. Parola kullanımını tamamen kapatmak için /etc/ssh/sshd_config dosyasında "PasswordAuthentication" parametresini "no" olarak ayarlamalıyız. Yaptığımız her değişikliği uygulamak service ssh restart komutunu kullanmamız gerekiyor.

nano /etc/ssh/sshd_config

sshd-config-pass

SSH yapılandırma dosyaları gerek Linux gerek macOS dağıtımlarında /etc/ssh/ dizin altında bulunuyor.

Sunucuya bağlantı için /etc/ssh/sshd_config dosyasında birkaç ayar yapmak gerekebiliyor. Örneğin VirtualBox ile oluşturduğumuz sanal sunucuya (Debian) uzaktan bağlanmak için Debian "PermitRootLogin prohibit-password" parametresini "PermitRootLogin yes" şeklinde değiştirmek gerekiyor.

sshd_config sunucu, ssh_config ise istemci olarak gerekli ayarlar bulunuyor. Buradaki ayarlar tüm kullanıcıları etkilemektedir. İstemci olarak yalnızca ilgili kullanıcı için ~/.ssh/config dosyası oluşturabilirsiniz.

Örnek ~/.ssh/config dosyası

Host enterprise
    HostName 192.168.0.100
    Port 2233
    User root
    IdentityFile ~/.ssh-enterprise/id_rsa

Host 192.168.0.101
    IdentityFile ~/.ssh-voyager/id_rsa

ssh enterprise ya da ssh hasan@enterprise diyerek tanımladığımız parametrelerle giriş yapabiliriz. IdentityFile parametresi ile farklı anahtar kullanabiliriz.