OverTheWire Bandit: Seviye 13 → Seviye 14
Bağlam
Normalde SSH ile giriş yaparken kullanıcı adı ve şifre kullanırız. Ancak daha güvenli ve otomasyona uygun bir yöntem daha vardır: Anahtar Tabanlı Yetkilendirme (Key-Based Authentication).
Bu sistemde bir “Public Key” (kapı kilidi) ve bir “Private Key” (anahtar) bulunur. Sunucuda kilit vardır, sizdeki anahtar uyarsa şifre sormadan içeri girersiniz.
Bu seviyede bize bir şifre verilmiyor, bunun yerine sshkey.private adında bir dosya veriliyor.
İpucu: SSH anahtarları çok hassas dosyalardır. Eğer bu dosyayı
/tmpaltına kopyalarsanız veya kendiniz oluşturursanız, izinlerini sadece sahibinin okuyabileceği şekilde ayarlamanız gerekir (chmod 600 sshkey.private). Aksi takdirde SSH, “bu anahtar çok açık” diyerek reddedebilir. Bu seviyede dosya hazır geldiği için doğrudan kullanabiliriz.
Çözüm
Önemli: Sunucu bazen localhost üzerinden yapılan bağlantıları engeller. Bu durumda en garanti yöntem, anahtarı kendi bilgisayarımıza alıp oradan bağlanmaktır.
Yöntem 1: Kendi Bilgisayarından Bağlanmak (Kesin Çözüm)
- Sunucudaki anahtarın içeriğini okuyun:
cat sshkey.private - Çıkan metni (
-----BEGIN OPENSSH PRIVATE KEY-----ile başlayan) kopyalayın. - Kendi bilgisayarınızda bir dosya oluşturun ve yapıştırın:
nano bandit14.key # Yapıştır ve kaydet (Ctrl+O, Enter, Ctrl+X) - İzinleri ayarlayın:
chmod 600 bandit14.key - Kendi bilgisayarınızdan sunucuya bağlanın:
Bu yöntemle “localhost blocked” hatasını kesinlikle almazsınız.ssh -i bandit14.key bandit14@bandit.labs.overthewire.org -p 2220
Yöntem 2: Sunucu İçinden Zorlamak (Localhost)
Eğer sunucu içinden çıkmadan yapmak istiyorsanız, şu komutu deneyebilirsiniz (ancak engellenebilir):
ssh -i sshkey.private -p 2220 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no bandit14@localhost
Bir sonraki seviyeye geçerken işimiz kolaylaşsın diye bandit14’ün gerçek şifresini öğrenmek iyi bir fikirdir. /etc/bandit_pass/ altında her kullanıcının şifresi kendi adıyla saklanır:
cat /etc/bandit_pass/bandit14
# 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e
Öğrendiklerimiz
- SSH Private Key (
id_rsa): Dijital bir anahtardır. Asla başkalarıyla paylaşılmamalıdır. -iParametresi: SSH’a hangi anahtar dosyasını kullanacağını söyler.- Localhost SSH: Bir sunucudan çıkmadan, aynı sunucudaki başka bir kullanıcıya geçmek için SSH tüneli kullanılabilir.