Bir anahtar çifti paroladan çok daha güvenlidir: özel anahtar bilgisayarınızdan asla çıkmaz ve 22. portu tarayan botlar onu tahmin edemez. Windows 10 ve 11'de OpenSSH zaten bulunur; bu yüzden bir anahtar oluşturacak, VPS Linux Infrawire sunucunuza kuracak, Windows ssh-agent hizmetinde yüklü tutacak ve son olarak parola ile girişleri kapatacaksınız.
📋 Ön koşullar
- OpenSSH istemcisi olan Windows 10 veya 11 (PowerShell'de
ssh -Vile kontrol edin). - Hâlâ parolayla girebildiğiniz bir Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 veya Rocky 9): müşteri alanınızdan VPS'in IP adresini ve root parolasını bulabilirsiniz.
- Yaklaşık on dakika ve güvence olarak ikinci bir SSH oturumu veya VPS konsolu.
PowerShellssh -V
🔐 ed25519 anahtarı oluşturma
PowerShell'i açın (yönetici olmayan normal pencere) ve şunu çalıştırın:
PowerShellssh-keygen -t ed25519 -C 'USER@my-pc'
Varsayılan yol olan C:\Users\USER\.ssh\id_ed25519 yolunu kabul edin ve bir parola ifadesi girin. Bu ifade özel anahtarı diskte şifreler, bu yüzden çalınan bir dosya işe yaramaz. İki dosya oluşur: id_ed25519 (özel, asla paylaşmayın) ve id_ed25519.pub (açık).
📤 Açık anahtarı VPS'e kopyalama
Windows'ta ssh-copy-id yoktur, bu yüzden anahtarı elle kurun. Önce açık anahtarı görüntüleyin ve satırın tamamını kopyalayın:
PowerShellGet-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Parolanızla giriş yapın ve bu satırı sunucuda ekleyin (tek tırnak arasındaki örnek metni gerçek anahtarınızla değiştirin):
Bashssh root@VPS_IP mkdir -p ~/.ssh && chmod 700 ~/.ssh echo 'ssh-ed25519 AAAA...your-key... USER@my-pc' >> ~/.ssh/authorized_keys sed -i 's/\r$//' ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
sed satırı, anahtarı okunamaz hâle getirecek Windows satır sonlarını temizler. Bu iş için ssh'a PowerShell borusu kullanmayın: Windows PowerShell 5.1 verilere satır başı karakterleri ekleyebilir.
🧰 Windows'ta ssh-agent'ı etkinleştirme
Aracı olmadan her girişte parola ifadesini yazmanız gerekir. ssh-agent hizmeti kuruludur ancak varsayılan olarak devre dışı veya elle başlatılır durumdadır. Yönetici PowerShell'de:
PowerShellGet-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent
Ardından normal bir PowerShell'de anahtarınızı bir kez yükleyin ve yüklü anahtarları listeleyin:
PowerShellssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l
Aracı, yeniden başlatmadan sonra da anahtarı korur; size tekrar sorulmaz.
✅ Anahtarla girişi test etme
Yeniden bağlanın. Sunucu root parolasını sormadan bir kabuk almalısınız:
PowerShellssh root@VPS_IP
Hangi yöntemin kullanıldığını tam görmek için -v ekleyin ve Server accepts key ile Authenticated to ... using publickey ifadelerini arayın:
PowerShellssh -v root@VPS_IP
Bu çalışmadan ilerlemeyin ve bu oturumu açık tutun.
🚫 Sunucuda parola kimlik doğrulamasını kapatma
Ubuntu ve Debian'da /etc/ssh/sshd_config.d/ içinde parolaları açan bir dosya (örneğin 50-cloud-init.conf) zaten bulunabilir. SSH okuduğu ilk değeri kullanır; bu yüzden sıralamada daha önce gelen bir dosya oluşturun. VPS'te root olarak çalıştırın:
Bashgrep -ri 'PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ cat > /etc/ssh/sshd_config.d/10-keys-only.conf <<'EOF' PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitRootLogin prohibit-password EOF sshd -t && systemctl reload ssh
AlmaLinux/Rocky'de hizmetin adı sshd'dir: systemctl reload sshd kullanın. Ana sshd_config dosyasının başlarında Include /etc/ssh/sshd_config.d/*.conf satırının bulunduğundan emin olun (varsayılan budur). Sözdizimi geçerliyse sshd -t hiçbir şey yazdırmaz.
Yeni bir pencereden, parolaların artık reddedildiğini ve anahtarınızın hâlâ çalıştığını doğrulayın:
PowerShellssh -o PubkeyAuthentication=no root@VPS_IP
Beklenen yanıt Permission denied (publickey) olmalıdır.
🛠️ Sorun giderme
Permission denied (publickey). Anahtar doğru hesabın authorized_keys dosyasında değil, birden çok satıra yapıştırılmış veya izinler yanlış. Sunucuda chmod 700 ~/.ssh ve chmod 600 ~/.ssh/authorized_keys çalıştırın ve satırın ssh-ed25519 ile başladığını kontrol edin.
WARNING: UNPROTECTED PRIVATE KEY FILE. Diğer Windows hesapları özel anahtarınızı okuyabiliyor. Erişimi yalnızca kullanıcınızla sınırlayın:
PowerShellicacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "${env:USERNAME}:F"
Error connecting to agent: No such file or directory. ssh-agent hizmeti çalışmıyor; yukarıda gösterildiği gibi başlatın.
Değişiklikten sonra erişim kilitlendi. Müşteri alanınızdaki VPS konsolunu kullanın, /etc/ssh/sshd_config.d/10-keys-only.conf dosyasını silin, sshd -t çalıştırın ve SSH hizmetini yeniden yükleyin.
🚀 Windows bilgisayarınız artık VPS'e ed25519 anahtarıyla giriş yapıyor ve parolalar kapalı. Özel anahtarınızın bir yedeğini güvenli bir yerde saklayın.