SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-27

Ubuntu VPS Root Parolası Nasıl Değiştirilir?

Ubuntu sistemlerde passwd komutu ile root veya kullanıcı parolasını değiştirme yöntemlerini öğrenin. SSH oturumunu kaybetmeden parola doğrulama adımlarını uygulayın.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, August 1, 2026.

Ubuntu üzerinde VPS root parolasını değiştirme

Ubuntu üzerinde VPS (sanal özel sunucu) root parolasını değiştirmek için sudo komutunu çalıştırabilen bir kullanıcı ile SSH (secure shell) oturumu açın ve ardından sudo passwd root komutunu çalıştırın. Sistem yeni parolayı iki kez soracaktır; eski parolayı sormaz çünkü sudo ile kimliğiniz zaten doğrulanmıştır. Kendi kullanıcı parolanızı değiştirmek için ise herhangi bir argüman olmadan passwd komutunu çalıştırın; bu durumda sistem önce mevcut parolanızı soracaktır.

passwd                  # your own password
sudo passwd deploy      # another user's password
sudo passwd root        # root's password

İşlem bu kadardır. Aşağıdaki kısımlar ise genellikle hata yapılan bölümlerdir: oturumu kaybetmeden önce yeni parolanın çalıştığını doğrulamak, bir betik üzerinden parola atamak, bir parolayı kasıtlı olarak süresi dolacak şekilde ayarlamak ve parola kaybedildiğinde sisteme tekrar erişim sağlamak.

Parola değişikliği öncesinde ikinci bir oturum açın

Şu anda ikinci bir SSH oturumu açın ve bağlantıyı açık tutun. Bu kılavuzdaki hemen hemen her hata, kimlik doğrulaması yapılmış bir kabuk açıkken iki dakikada düzeltilebilir; ancak son oturum kapandığında fiziksel konsola erişim gerektirir.

Hali hazırda açık olan bir kabuk, ait olduğu hesabı değiştirseniz, kilitleseniz veya süresini doldursanız dahi çalışmaya devam eder; çünkü SSH kimlik bilgilerini yalnızca giriş anında doğrular ve sonrasında tekrar kontrol etmez. Bunun istisnası sudo komutudur. Bu komut, zaman damgası dolduğunda (varsayılan olarak son komuttan 15 dakika sonra) PAM (pluggable authentication modules) aracılığıyla parolanızı tekrar kontrol eder. Dolayısıyla yeni parola, ilk gerçek testini giriş anında değil, sudo komutu bir sonraki kez parola sorduğunda gerçekleştirir.

Yeni parolayı, ilk oturumu açık tutarak ikinci oturumda test edin.

passwd ile kendi parolanızı değiştirin

passwd
Changing password for deploy.
Current password:
New password:
Retype new password:
passwd: password updated successfully

passwd: password updated successfully ifadesi, /etc/shadow içindeki hash değerinin başarıyla değiştirildiğini gösteren tek çıktıdır. Bunun dışındaki herhangi bir çıktı, eski parolanın değişmeden kaldığı anlamına gelir.

Burada iki tür hata oluşabilir. passwd: Authentication token manipulation error ve ardından gelen passwd: password unchanged, girdiğiniz mevcut parolanın yanlış olduğunu veya /etc/shadow dosyasını barındıran dosya sisteminin yazılabilir olmadığını gösterir; ikincisi, kurtarma modunda (recovery mode) beklenen bir durumdur. You must choose a longer password. hatası ise /etc/pam.d/common-password içindeki pam_unix yapılandırmasından kaynaklanır; bu yapılandırma, standart kullanıcılar için parola uzunluğu ve benzerlik denetimleri uygular.

Çoğu VPS imajında varsayılan hesap (ubuntu veya sağlayıcınızın atadığı herhangi bir isim), parola içermez; yalnızca SSH anahtarı ile erişim sağlanır. passwd komutunun karşılaştırabileceği mevcut bir parola bulunmadığından, ilk istemi geçemez. Bunun yerine, ilgili imajın sudoers yapılandırması sayesinde parolasız olarak sudo çalıştırmanıza izin veren sudo passwd $USER komutunu kullanın.

sudo passwd ile başka bir kullanıcının parolasını değiştirme

sudo passwd deploy

Root kullanıcısı eski parolayı girmek zorunda değildir ve pam_unix bayrağı, normal kullanıcılara uygulanan parola güçlülüğü denetimlerini atlar. Bu sayede root, kullanıcının kendisinin belirleyemeyeceği bir parolayı atayabilir.

Hesabı kilitlemek ayrı bir işlemdir. sudo passwd -l deploy komutu, saklanan parolanın hash değerinin önüne bir ! karakteri ekler; böylece hiçbir parola bu hash ile eşleşmez. sudo passwd -u deploy komutu ise bu kilidi kaldırır. Hesabın durumunu kontrol etmek için sudo passwd -S deploy komutu kullanılır.

Parolayı kilitlemek, kullanıcının sisteme giriş yapmasını engellemez. Kullanıcının ~/.ssh/authorized_keys dosyasındaki herhangi bir anahtar çalışmaya devam eder, çünkü public key authentication yöntemi hiçbir zaman /etc/shadow dosyasını okumaz. Bir hesabı tamamen devre dışı bırakmak için hesabın süresini dolmuş olarak işaretleyin:

sudo usermod --expiredate 1 deploy

Bu komut, hesap süresini 1970 yılındaki bir tarihe ayarlar; böylece sshd, hangi kimlik bilgisi sunulursa sunulsun girişi reddeder. İşlemi geri almak için sudo usermod --expiredate '' deploy komutunu kullanın.

passwd -d komutundan kaçının. Bu komut, hesabı kilitlemek yerine boş bir parola atar. PAM yığınında nullok yapılandırması bulunan eski sürümlerde, boş parola herkesin sisteme erişebilmesine olanak tanır.

Bir VPS üzerinde root kullanıcısının parolaya ihtiyacı var mı?

Ubuntu, root hesabı kilitli olarak gelir. /etc/shadow, parola özeti (hash) yerine ! değerini tutar ve sudo passwd -S root, root L ile başlayan bir satır yazdırır. Siz bir parola belirleyene kadar hiçbir şey root olarak parola ile giriş yapamaz; bu nedenle sunucu imajı size bunun yerine sudo yetkilerine sahip bir kullanıcı sunar. Root olarak çalışmak yerine VPS üzerinde en düşük ayrıcalıklı kullanıcı hesapları ile ilerlemek, sürdürülmesi gereken standart yöntemdir.

Bir root parolası belirlemek tek bir somut fayda sağlar: sağlayıcı konsolu üzerinden erişim imkanı. Bu konsol, sanal makineye ağ yığınının altından bağlandığı için sshd yanlış yapılandırıldığında veya bir güvenlik duvarı kuralı hatalı olduğunda çalışmaya devam eder. Ancak bunun bir bedeli de vardır. GRUB kurtarma menüsündeki root kabuğu, root kullanıcısının parolası olduğunda bu parolayı sorar; dolayısıyla unutulan bir parolayı sıfırlamak için kullanacağınız araç, artık bizzat o parolanın arkasında kalmış olur.

Bir root parolası belirlemek, root kullanıcısının SSH üzerinden giriş yapmasına izin vermez. Ubuntu PermitRootLogin prohibit-password ayarıyla gelir, bu da yalnızca anahtarların kullanılabileceği anlamına gelir. Sunucunuzun gerçekte ne kullandığını kontrol edin:

sudo sshd -T | grep -i permitrootlogin

sshd -T, her Include satırı çözümlendikten sonra geçerli yapılandırmayı yazdırır; bu nedenle /etc/ssh/sshd_config.d/ ek dosyaları (drop-in files) barındırdığında, sunucunun durumuna dair tek güvenilir yanıt budur.

chpasswd ile betik üzerinden parola belirleme

passwd terminalden okuma yapar ve betik ile yönetilemez. chpasswd ise standart girdi üzerinden, her satırda bir tane olacak şekilde user:password çiftlerini okur.

printf '%s:%s\n' 'deploy' "$NEW_PASSWORD" | sudo chpasswd

Bu yöntem çalışır ancak düz metin halindeki parolayı shell geçmişinize ve CI (sürekli entegrasyon) günlüklerinize yazar. Bunun yerine önce hash değerini oluşturun:

HASH=$(openssl passwd -6)
printf '%s:%s\n' 'deploy' "$HASH" | sudo chpasswd -e

openssl passwd -6 parola için iki kez giriş ister ve karakterleri gizler, ardından $6$ ile başlayan bir SHA-512 crypt hash değeri üretir. -e bayrağı, chpasswd komutuna ikinci alanın zaten hash'lenmiş olduğunu bildirir; böylece değer olduğu gibi /etc/shadow dosyasına kopyalanır. Bu hash değerini bir depoda veya CI değişkeninde tutmak güvenlidir; düz metin halindeki parola, yazdığınız makineden asla dışarı çıkmaz.

Ubuntu 24.04, passwd ile parola belirlendiğinde yeni parolaları yescrypt ($y$) ile hash'lerken, openssl passwd -6 size SHA-512 sunar. libxcrypt her iki formatı da okuyabildiği için giriş sırasında her ikisi de doğrulanır. Bunları karıştırmakta bir sakınca yoktur ve openssl passwd -6 her Ubuntu LTS sürümünde aynı şekilde davranır; chpasswd -c YESCRYPT ise bunu yapmaz: 20.04 üzerindeki eski shadow paketi bu yöntem adını tanımaz. Bu hash değerleri sürüm yükseltmelerinde de geçerliliğini korur, bu nedenle 24.04 sunucusunu 26.04 sürümüne taşımak, herhangi bir kullanıcının parolasını sıfırlamanızı gerektirmez.

Parolanın gerçekten değiştiğini nasıl kontrol edersiniz?

Önce meta verilerle başlayın, ardından bir oturum açma denemesiyle doğrulayın.

sudo passwd -S deploy
deploy P 08/01/2026 0 99999 7 -1

İkinci alan durum bilgisidir: P kullanılabilir bir parolayı, L kilitli durumu, NP ise parolanın hiç olmadığını belirtir. Tarih, parolanın en son değiştirildiği zamandır; dolayısıyla bugünün tarihini göstermelidir. Ardından gelen sayılar, aşağıda açıklanan yaşlandırma (aging) alanlarıdır.

En güvenli canlı test sudo komutunun kendisidir. sudo -k önbelleğe alınmış zaman damgasını atar ve sudo -v yeni bir parola istemi zorlar. Eğer yeni parola burada kabul edilirse, PAM tarafından onaylanmış demektir ve oturumunuzda herhangi bir değişiklik yapılmamıştır.

sudo -k && sudo -v

Başka bir hesabı test etmek için yetkisiz bir kabuktan su - deploy komutunu çalıştırın. sudo su - deploy komutunu çalıştırmayın; çünkü root kullanıcısına hiçbir zaman parola sorulmaz ve bu test hiçbir şeyi kanıtlamaz. Yanlış parola girildiğinde su: Authentication failure çıktısı alınır.

Gerçek test, mevcut oturumunuz açıkken dizüstü bilgisayarınızdan yeni bir SSH oturumu açmaktır:

ssh -o PubkeyAuthentication=no deploy@203.0.113.10

Buradaki Permission denied (publickey). hatası, sunucunun parola kimlik doğrulamasını hiç sunmadığı anlamına gelir; bu durumda parola değişikliği giriş yapmanızı sağlamayacaktır. Permission denied, please try again. ise sunucunun parola kimlik doğrulamasını sunduğu ancak girdiğiniz parolayı reddettiği anlamına gelir.

chage ile bir sonraki girişte parola değişikliğini zorunlu kılma

sudo chage -d 0 deploy

-d 0, son parola değişikliği tarihini epoch zamanına ayarlar; bu sayede PAM, parolayı süresi dolmuş olarak kabul eder. Bir sonraki etkileşimli girişte sistem, kabuk (shell) erişimi vermeden önce mevcut parolayı ve ardından yeni parolayı ister. sudo passwd -e deploy de tam olarak aynı işlemi gerçekleştirir.

Bu komutu yalnızca parola ile etkileşimli giriş yapan hesaplar için kullanın. Süresi dolmuş bir parola, anahtar tabanlı girişleri de etkiler; çünkü sshd, kimlik doğrulama anahtar ile yapılsa dahi PAM hesap aşamasını çalıştırır. Bu durumda, betik ile çalışan bir ssh deploy@203.0.113.10 'systemctl restart app' şu hata ile başarısız olur ve durur:

Password change required but no TTY available.

Bu satırdan sonra hiçbir işlem çalışmaz ve görev yalnızca sıfır olmayan bir çıkış kodu döndürür.

Parola yaşlandırma alanlarının anlamı

sudo chage -l deploy
Last password change                                    : Aug 01, 2026
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

Bu sayılar, ilgili kullanıcının /etc/shadow dosyasındaki satırının 4 ile 8 arasındaki alanlarını temsil eder. Minimum gün sayısı (chage -m), kullanıcının parolayı tekrar değiştirebilmesi için geçmesi gereken süredir; bu, zorunlu bir değişiklikten sonra kullanıcının hemen eski parolasına dönmesini engeller. Maksimum gün sayısı (chage -M), parolanın geçerlilik süresidir. Uyarı gün sayısı (chage -W), oturum açma sırasında uyarı mesajlarının gösterilmeye başlanacağı süredir. Etkisiz gün sayısı (chage -I), parolanın süresi dolduktan sonra, parolanın tamamen reddedilmesine kadar geçen ek süredir. Hesap bitiş tarihi (chage -E) ise kesin bir tarihtir ve parolanın geçerlilik süresinden bağımsızdır.

sudo chage -M 90 -W 14 deploy

Bu ayarı yalnızca bir politika gerektirdiğinde yapılandırın. NIST (ABD Ulusal Standartlar ve Teknoloji Enstitüsü), 2017 yılından bu yana rutin parola süresi dolumuna karşı tavsiyede bulunmaktadır; çünkü bu uygulama kullanıcıları tahmin edilebilir parola varyasyonları oluşturmaya iter. NIST, bunun yerine yalnızca bir güvenlik ihlali kanıtı olduğunda parola değişikliği zorunlu kılınmasını önermektedir. Bir parola yöneticisinde tutulan uzun ve özgün bir parola ile birlikte anahtar tabanlı SSH kullanımı, 90 günlük bir döngüden daha güvenlidir.

root parolasını kaybettiğinizde ne yapmalı

Sunucudaki herhangi bir hesap sudo komutunu çalıştırabiliyorsa kurtarılacak bir durum yoktur: sudo passwd root yeni bir parola belirler. Zor durum, hiçbir oturum açma yönteminin çalışmadığı durumdur.

Aşağıdaki tüm işlemler, çoğu panelde VNC (virtual network computing) veya seri konsol olarak listelenen sağlayıcı konsolunu gerektirir. Bu konsol, sanal makineye ağ yığınının altından bağlanır; bu nedenle sshd ayarları ve güvenlik duvarı kuralları konsolu etkilemez.

  1. Sunucuyu panelden yeniden başlatın ve konsolu izleyin.
  2. GRUB menüsüne ulaşın. Bulut imajları genellikle GRUB_TIMEOUT=0 ayarını kullanır; bu nedenle BIOS önyüklemesinde Shift tuşunu basılı tutun veya UEFI önyüklemesinde yeniden başlatma başlar başlamaz Esc tuşuna art arda basın.
  3. Advanced options for Ubuntu seçeneğini, ardından (recovery mode) ile biten girişi ve son olarak kurtarma menüsündeki root seçeneğini seçin.
  4. Önce mount -o remount,rw / komutunu çalıştırın. Kurtarma modu kök dosya sistemini salt okunur olarak bağlar; bu komut olmadan passwd, /etc/shadow dosyasına yazamadığı için passwd: Authentication token manipulation error hatasıyla başarısız olur.
  5. İhtiyacınız olan hesap için passwd ubuntu komutunu çalıştırın, ardından sunucuyu panelden yeniden başlatın.

Eğer root kullanıcısının zaten bir parolası varsa ve kaybettiğiniz parola buysa, kurtarma kabuğu bu parolayı soracak ve yol kapanacaktır. Bunun yerine sağlayıcının kurtarma (rescue) imajını önyükleyin, ardından gerçek diski bağlayın ve parolayı içeriden değiştirin.

lsblk
sudo mount /dev/vda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt passwd ubuntu
sudo umount -R /mnt

Bölüm düzenini bu sayfadan /dev/vda1 kopyalamak yerine lsblk üzerinden okuyun. Kök bölümü büyük olan bölümdür. UEFI imajlarında bu bölüm, içinde /etc dizini bulunmayan küçük bir EFI bölümünün yanında yer alır.

SSH parolanızı kabul etmeyi bıraktığında ne yapmalı

Hala açık olan oturumunuz üzerinden çalışın. Eğer açık oturum kalmadıysa konsolu kullanın.

Permission denied, please try again., sunucunun parola kimlik doğrulamasını sunduğu ancak gönderdiğiniz parolayı reddettiği anlamına gelir. Bunun yaygın nedenleri Caps Lock tuşunun açık olması veya konsol klavye düzeninin parolayı belirlediğiniz zamankinden farklı olmasıdır.

Permission denied (publickey)., sunucunun parola kimlik doğrulamasını hiç sunmadığı anlamına gelir. PasswordAuthentication no bir yerde ayarlanmıştır ve Ubuntu 22.04 ve sonraki sürümlerde genellikle ana dosyayı geçersiz kılan /etc/ssh/sshd_config.d/ altındaki bir ek dosyada bulunur. Geçerli değerleri okuyun:

sudo sshd -T | grep -Ei 'passwordauthentication|kbdinteractiveauthentication|permitrootlogin'

KbdInteractiveAuthentication yes ile birlikte PasswordAuthentication no, parola girişine hala izin verir; çünkü keyboard-interactive yöntemi aynı PAM yığınını çalıştırır. Birini kapatıp diğerini açık bırakmak, yalnızca anahtar (key) ile çalışıyor gibi görünen bir sunucunun yazılan parolaları kabul etmeye devam etmesine neden olur.

Aynı satır, reddedilen bir anahtar girişi için de görüntülenir; bu nedenle eğer parola yerine bir anahtar sunuyorsanız, sunucunun parola ayarı Permission denied (publickey) hatasının arkasındaki beş hatadan yalnızca biridir ve ssh -v çıktısı size hangisinin gerçekleştiğini söyler.

Bağlantı kesme mesajındaki Too many authentication failures, istemcinizin parolaya ulaşmadan önce birkaç anahtar sunduğu ve sunucunun varsayılan olarak 6 olan MaxAuthTries sınırına ulaştığı anlamına gelir. Tek bir yöntemi zorunlu kılın:

ssh -o IdentitiesOnly=yes -o PubkeyAuthentication=no deploy@203.0.113.10

Bir dakika önce çalışan bir portta Connection refused hatası, genellikle SSH'i izleyen fail2ban uygulamasının tekrarlanan başarısız denemelerden sonra adresinizi yasakladığı anlamına gelir. Varsayılan yasaklama kuralı, paketi düşürmek yerine reddeder; bu yüzden hata mesajı zaman aşımına uğramak yerine hızlıca geri döner. Konsoldan, sudo fail2ban-client status sshd yasaklı adresleri listeler ve sudo fail2ban-client set sshd unbanip 203.0.113.10 sizin adresinizi temizler.

Parolalar bir başlangıç adımıdır, anahtarlar ise nihai hedeftir

SSH üzerinden çalışan bir parola, internetteki her tarayıcının tahmin etmeye çalıştığı bir paroladır. Anahtar tabanlı kimlik doğrulamaya geçildiğinde tahmin etme çabaları anlamsızlaşır. Bir anahtar çifti oluşturun, genel anahtar kısmını yükleyin ve başka hiçbir şeyi değiştirmeden önce ikinci bir terminalden anahtarın sizi sisteme soktuğunu doğrulayın. SSH anahtar yönetimi temelleri, anahtar oluşturma, authorized_keys ve parola ifadelerini (passphrase) kapsar.

Ardından parola ile kimlik doğrulamayı kapatın ve düzenlediğiniz dosyaya güvenmek yerine sudo sshd -T ile bunu doğrulayın. VPS üzerinde SSH güvenliğini sıkılaştırma, değiştirilmesi gereken diğer sshd ayarlarını ele alır; yeni bir VPS üzerindeki ilk on dakika ise bu işlemleri yeni bir sunucuda yapılması gereken sırayla açıklar.

Bundan sonra tek bir parola tutun. Bozuk bir sshd yapılandırmasına sahip, yalnızca anahtar ile erişilen bir sunucuya sadece sağlayıcı konsolu üzerinden ulaşılabilir ve bu konsol bir kullanıcı adı ile parola ister. Sakladığınız güçlü bir parolaya sahip bir hesap, beş dakikalık bir düzeltme ile yeniden kurulum yapma arasındaki farkı belirler.

FAQ

Eski root parolasını bilmiyorsam VPS üzerinde parolayı nasıl değiştiririm?

sudo komutunu çalıştırabilen bir kullanıcı ile giriş yapın ve sudo passwd root komutunu kullanın. sudo sizi zaten yetkilendirdiği için eski parolayı sormadan yeni bir parola belirler. Sunucuda sudo komutunu çalıştırabilen bir hesap yoksa, sağlayıcı konsolunu açın, GRUB kurtarma menüsüne yeniden başlatın, root kabuk girişini seçin, mount -o remount,rw / komutunu çalıştırın ve ardından passwd komutunu uygulayın. Eğer root kullanıcısının zaten bir parolası varsa ve bunu kaybettiyseniz, kurtarma kabuğu bu parolayı soracaktır; bu durumda tek seçenek, diskin mount edildiği ve chroot yapıldığı sağlayıcı kurtarma imajını kullanmaktır.

passwd komutu neden "Authentication token manipulation error" hatası veriyor?

Bu mesajın iki nedeni vardır. Yaygın olanı, Current password: istemine yanlış cevap verilmesidir ve altındaki passwd: password unchanged satırı hiçbir şeyin yazılmadığını doğrular. Diğeri ise yazılabilir olmayan bir dosya sistemidir; kurtarma modunda / salt okunur (read-only) olarak mount edildiği için bu hatayla karşılaşırsınız. mount -o remount,rw / komutunu çalıştırın ve tekrar deneyin.

Linux parolamı değiştirmek sudo parolamı da değiştirir mi?

Evet. sudo kendi başına bir parolaya sahip değildir. Sizi PAM üzerinden SSH ve su ile aynı olan /etc/shadow girdisine karşı doğrular, bu nedenle her hesap için tek bir parola vardır. Parola değişikliğinden sonraki ilk sudo isteminin gerçek test olmasının nedeni de budur. Çalışan bir oturumunuz varken bu istemi zorlamak için sudo -k && sudo -v komutunu çalıştırın.

Parolamı değiştirmek SSH anahtarlarımı veya açık oturumlarımı bozar mı?

Hayır. Açık anahtar kimlik doğrulaması asla /etc/shadow dosyasını okumaz, bu nedenle anahtarlar parola değişikliğinden, passwd -l ve chage -d 0 işlemlerinden sonra çalışmaya devam eder. SSH kimlik bilgilerini yalnızca giriş sırasında kontrol ettiği için halihazırda açık olan oturumlar açık kalmaya devam eder. Aktif bir oturum içinde değişen tek şey, 15 dakikalık zaman damgası dolduğunda yeni parolayı soracak olan sudo mekanizmasıdır.

Bir kullanıcıyı bir sonraki girişte parolasını değiştirmeye nasıl zorlarım?

sudo chage -d 0 deploy veya aynı işlemi yapan sudo passwd -e deploy komutunu çalıştırın. Kayıtlı son değişiklik tarihi epoch zamanına taşınır, PAM parolayı süresi dolmuş olarak işaretler ve bir sonraki interaktif girişte kabuk başlamadan önce yeni bir parola belirlenmesi gerekir. Bunu SSH üzerinden betikler tarafından kullanılan bir hesap için yapmayın: interaktif olmayan bir komut Password change required but no TTY available. hatası verir ve çalışmaz.

#vps#ubuntu#passwords#ssh#server-security