SSD Nodes Learn Hosting plans →
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-30

Ubuntu VPS root கடவுச்சொல்லை மாற்றுவது எப்படி?

Ubuntu VPS கணக்கில் passwd மற்றும் chpasswd கட்டளைகளைப் பயன்படுத்தி root கடவுச்சொல்லை மாற்றும் முறையை அறிக. SSH அணுகல் இழந்தால் மீண்டும் உள்நுழையும் நுணுக்கங்களையும் இதில் காணலாம்.

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

Ubuntu-வில் உங்கள் VPS root கடவுச்சொல்லை மாற்றுவது எப்படி

Ubuntu-வில் உங்கள் VPS (virtual private server) root கடவுச்சொல்லை மாற்ற, sudo கட்டளையை இயக்கக்கூடிய பயனராக SSH (secure shell) அமர்வைத் தொடங்கி, பின் sudo passwd root கட்டளையை இயக்கவும். இது புதிய கடவுச்சொல்லை இரண்டு முறை கேட்கும்; பழைய கடவுச்சொல்லைக் கேட்காது, ஏனெனில் sudo மூலம் நீங்கள் ஏற்கனவே அங்கீகரிக்கப்பட்டுள்ளீர்கள். உங்கள் சொந்த பயனர் கணக்கின் கடவுச்சொல்லை மாற்ற விரும்பினால், எந்த வாதமும் (argument) இன்றி passwd கட்டளையை இயக்கவும்; இது முதலில் உங்கள் தற்போதைய கடவுச்சொல்லைக் கேட்கும்.

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

இதுவே முழுமையான செயல்முறை. கீழே உள்ளவை தவறாக முடியக்கூடிய பகுதிகள்: அமர்வை இழக்கும் முன்பே புதிய கடவுச்சொல் வேலை செய்கிறதா என்று சரிபார்த்தல், script மூலம் கடவுச்சொற்களை அமைத்தல், ஒரு கடவுச்சொல்லை வேண்டுமென்றே காலாவதியாக்குதல் மற்றும் கடவுச்சொல் தொலைந்துவிட்ட நிலையில் மீண்டும் கணக்கிற்குள் நுழைதல் போன்றவை இதில் அடங்கும்.

கடவுச்சொல்லை மாற்றும் முன் இரண்டாவது அமர்வைத் திறக்கவும்

இப்போதே இரண்டாவது SSH அமர்வைத் திறந்து, அதை இணைப்பில் வைத்திருக்கவும். இந்த வழிகாட்டியில் ஏற்படும் பெரும்பாலான பிழைகளை, ஒரு அங்கீகரிக்கப்பட்ட shell செயல்பாட்டில் இருக்கும்போது இரண்டு நிமிடங்களில் சரிசெய்துவிடலாம். ஆனால், கடைசி அமர்வும் துண்டிக்கப்பட்டால், நீங்கள் console வழியாகத்தான் அணுக வேண்டியிருக்கும்.

நீங்கள் ஒரு கணக்கின் கடவுச்சொல்லை மாற்றினாலும், முடக்கினாலும் அல்லது காலாவதியாக்கினாலும், ஏற்கனவே திறந்திருக்கும் shell தொடர்ந்து செயல்படும். ஏனெனில், SSH உள்நுழையும்போது மட்டுமே நற்சான்றிதழ்களைச் சரிபார்க்கும், மீண்டும் சரிபார்க்காது. இதற்கு sudo விதிவிலக்காகும். இது PAM (pluggable authentication modules) மூலம் உங்கள் கடவுச்சொல்லை மீண்டும் சரிபார்க்கும். இயல்பாக, கடைசி prompt-க்கு பிறகு 15 நிமிடங்கள் கழித்து இதன் காலாவதி நேரம் முடிவடையும். எனவே, புதிய கடவுச்சொல் உள்நுழையும்போது அல்ல, அடுத்த முறை sudo அதைக் கேட்கும்போதுதான் முதன்முதலில் சோதிக்கப்படும்.

முதல் அமர்வை மூடாமல், இரண்டாவது அமர்வில் புதிய கடவுச்சொல்லைச் சோதிக்கவும்.

passwd கட்டளையைப் பயன்படுத்தி உங்கள் கடவுச்சொல்லை மாற்றுதல்

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

passwd: password updated successfully என்பது மட்டுமே /etc/shadow-ல் உள்ள hash மாற்றப்பட்டதைக் குறிக்கும் வெளியீடாகும். வேறு எந்த வெளியீடும் பழைய கடவுச்சொல்லையே வைத்திருக்கும்.

இங்கு இரண்டு தோல்விகள் ஏற்படலாம். passwd: Authentication token manipulation error-ஐத் தொடர்ந்து passwd: password unchanged வருவது, நீங்கள் உள்ளிட்ட தற்போதைய கடவுச்சொல் தவறானது என்பதையோ அல்லது /etc/shadow-ஐக் கொண்டுள்ள கோப்பு முறைமையில் (filesystem) எழுத முடியாது என்பதையோ குறிக்கும்; recovery mode-ல் இதுவே இயல்பான நிலை. You must choose a longer password. என்பது /etc/pam.d/common-password-ல் உள்ள pam_unix-லிருந்து வருகிறது, இது சாதாரண பயனர்களுக்கு கடவுச்சொல்லின் நீளம் மற்றும் ஒற்றுமை சோதனைகளைச் செய்கிறது.

பெரும்பாலான VPS images-ல், இயல்புநிலை கணக்கிற்கு (ubuntu, அல்லது உங்கள் சேவை வழங்குநர் வழங்கும் பெயர்) கடவுச்சொல் இருப்பதில்லை, SSH key மட்டுமே இருக்கும். passwd-க்கு சரிபார்க்க தற்போதைய கடவுச்சொல் இல்லாததால், அது முதல் prompt-ஐத் தாண்ட முடியாது. அதற்குப் பதிலாக sudo passwd $USER-ஐப் பயன்படுத்தவும்; அந்த image-ன் sudoers drop-in கோப்பு, அந்த கணக்கிற்கு கடவுச்சொல் இல்லாமலேயே sudo-ஐ இயக்க அனுமதிப்பதால் இது வேலை செய்கிறது.

sudo passwd மூலம் மற்றொரு பயனரின் கடவுச்சொல்லை மாற்றுதல்

sudo passwd deploy

Root பயனரிடம் பழைய கடவுச்சொல் கேட்கப்படாது, மேலும் pam_unix சாதாரண பயனர்களுக்குப் பொருந்தும் கடவுச்சொல் வலிமை சோதனைகளைத் தவிர்க்கிறது. எனவே, ஒரு பயனர் தாங்களாகவே அமைக்க முடியாத கடவுச்சொல்லை root பயனரால் அமைக்க முடியும்.

கடவுச்சொல்லை முடக்குவது (Locking) ஒரு தனிச் செயல். sudo passwd -l deploy சேமிக்கப்பட்ட hash-க்கு முன்னால் ஒரு ! குறியீட்டைச் சேர்க்கிறது, இதனால் எந்த கடவுச்சொல்லும் அதனுடன் பொருந்தாது. sudo passwd -u deploy அந்த குறியீட்டை நீக்குகிறது. sudo passwd -S deploy மூலம் தற்போதைய நிலையைச் சரிபார்க்கலாம்.

கடவுச்சொல்லை முடக்குவது அந்த பயனர் உள்நுழைவதைத் தடுக்காது. அவர்களின் ~/.ssh/authorized_keys-ல் உள்ள எந்தவொரு key-ம் தொடர்ந்து செயல்படும், ஏனெனில் public key authentication முறை ஒருபோதும் /etc/shadow-ஐப் படிப்பதில்லை. ஒரு கணக்கை முழுமையாகத் தடுக்க, அந்தக் கணக்கின் காலாவதி தேதியை மாற்ற வேண்டும்:

sudo usermod --expiredate 1 deploy

இது கணக்கின் காலாவதி தேதியை 1970-ஆம் ஆண்டிற்கு மாற்றுகிறது, எனவே எந்தச் சான்றுகளை (credential) வழங்கினாலும் sshd உள்நுழைவை மறுத்துவிடும். sudo usermod --expiredate '' deploy மூலம் இதைச் சரிசெய்யலாம்.

passwd -d கட்டளையைத் தவிர்க்கவும். இது கடவுச்சொல்லை முடக்குவதற்குப் பதிலாக, காலியான கடவுச்சொல்லை அமைக்கிறது. PAM stack-ல் nullok உள்ள பழைய release-களில், காலியான கடவுச்சொல்லை எவர் வேண்டுமானாலும் பயன்படுத்த முடியும்.

VPS-ல் root-க்கு கடவுச்சொல் (password) தேவையா?

Ubuntu-வில் root கணக்கு பூட்டப்பட்ட நிலையிலேயே வழங்கப்படுகிறது. /etc/shadow, hash-க்கு பதிலாக !-ஐக் கொண்டுள்ளது, மேலும் sudo passwd -S root கட்டளையானது root L எனத் தொடங்கும் வரியை அச்சிடுகிறது. நீங்கள் கடவுச்சொல்லை அமைக்கும் வரை, எவராலும் root கணக்கில் கடவுச்சொல் மூலம் நுழைய முடியாது; இதனால்தான், வழங்கப்பட்ட image-ல் sudo வசதி கொண்ட பயனர் கணக்கு முன்னிருப்பாகக் கிடைக்கிறது. root-ஆகச் செயல்படுவதற்குப் பதிலாக, VPS-ல் குறைந்தபட்ச அதிகாரங்கள் கொண்ட பயனர் கணக்குகளைப் பயன்படுத்துதல் என்ற முறையைப் பின்பற்றுவதே பாதுகாப்பானது.

root கடவுச்சொல்லை அமைப்பதன் மூலம் ஒரு குறிப்பிட்ட வசதி கிடைக்கிறது: provider console வழியாக உள்ளே நுழைய முடியும். அந்த console, network stack-க்கு அடியில் உள்ள virtual machine-உடன் இணைக்கப்படுவதால், sshd தவறாக உள்ளமைக்கப்பட்டிருந்தாலோ அல்லது firewall விதி தவறாக இருந்தாலோ அது தொடர்ந்து செயல்படும். ஆனால், இதனால் ஒரு இழப்பும் உண்டு. GRUB recovery menu-வில் உள்ள root shell, root-க்கு கடவுச்சொல் இருந்தால் அதைக் கேட்கும்; எனவே, மறந்துபோன கடவுச்சொல்லை மீட்டமைக்கப் பயன்படுத்த வேண்டிய கருவியே இப்போது அந்த கடவுச்சொல்லுக்குப் பின்னால் மறைந்திருக்கும்.

root கடவுச்சொல்லை அமைப்பது, SSH வழியாக root நுழைய அனுமதிப்பதில்லை. Ubuntu-வில் PermitRootLogin prohibit-password முன்னிருப்பாக உள்ளது, அதாவது SSH-க்கு keys மட்டுமே பயன்படுத்தப்படும். உங்கள் server உண்மையில் எதைப் பயன்படுத்துகிறது என்பதைச் சரிபார்க்கவும்:

sudo sshd -T | grep -i permitrootlogin

sshd -T கட்டளையானது, ஒவ்வொரு Include வரியும் தீர்க்கப்பட்ட பிறகு, நடைமுறையில் உள்ள உள்ளமைவை (effective configuration) அச்சிடுகிறது. எனவே, /etc/ssh/sshd_config.d/-ல் drop-in கோப்புகள் இருக்கும்போது, இதுவே சரியான தகவலைத் தரும் ஒரே வழியாகும்.

chpasswd மூலம் script வழியாக கடவுச்சொல்லை அமைத்தல்

passwd கட்டளையானது terminal-லிருந்து உள்ளீட்டைப் பெறுகிறது, எனவே இதை script மூலம் இயக்க முடியாது. chpasswd கட்டளையானது standard input-ல் உள்ள user:password இணைகளை, வரிக்கு ஒன்றாகப் படித்துச் செயல்படுகிறது.

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

இது வேலை செய்யும், ஆனால் உங்கள் shell history மற்றும் CI (continuous integration) பதிவுகளில் plaintext கடவுச்சொல்லைப் பதிவு செய்துவிடும். அதற்குப் பதிலாக, முதலில் அதை hash செய்யவும்:

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

openssl passwd -6 கட்டளையானது கடவுச்சொல்லை இரண்டு முறை கேட்கும், அப்போது எழுத்துக்கள் திரையில் தெரியாது. பின்னர், $6$-ல் தொடங்கும் SHA-512 crypt hash-ஐ வெளியிடும். -e கொடியானது, இரண்டாவது புலம் ஏற்கனவே hash செய்யப்பட்டுள்ளது என்பதை chpasswd-க்குத் தெரிவிக்கிறது, எனவே அது அப்படியே /etc/shadow-க்கு நகலெடுக்கப்படும். இந்த hash-ஐ repository-ல் அல்லது CI variable-ல் வைத்திருப்பது பாதுகாப்பானது; நீங்கள் தட்டச்சு செய்த கணினியை விட்டு plaintext கடவுச்சொல் வெளியேறாது.

Ubuntu 24.04-ல் passwd மூலம் புதிய கடவுச்சொற்களை அமைக்கும்போது அவை yescrypt ($y$) முறையில் hash செய்யப்படுகின்றன, அதே சமயம் openssl passwd -6 SHA-512 முறையைப் பயன்படுத்துகிறது. libxcrypt இரண்டு வடிவங்களையும் வாசிப்பதால், login செய்யும்போது இரண்டுமே சரிபார்க்கப்படும். இவற்றை ஒன்றாகப் பயன்படுத்துவதில் சிக்கல் இல்லை. openssl passwd -6 அனைத்து Ubuntu LTS பதிப்புகளிலும் ஒரே மாதிரியாகச் செயல்படும், ஆனால் chpasswd -c YESCRYPT அவ்வாறு செயல்படாது: 20.04-ல் உள்ள பழைய shadow package-க்கு அந்த method பெயர் தெரியாது. இந்த hash-கள் OS பதிப்பு மாற்றத்தின்போதும் அழியாது, எனவே 24.04 server-ஐ 26.04-க்கு மேம்படுத்தும்போது பயனர்களின் கடவுச்சொற்களை மீண்டும் மாற்ற வேண்டிய அவசியம் இருக்காது.

கடவுச்சொல் உண்மையில் மாற்றப்பட்டுள்ளதா என்பதை எவ்வாறு சரிபார்ப்பது?

முதலில் metadata-வைச் சரிபார்க்கவும், பிறகு login செய்து அதை உறுதிப்படுத்தவும்.

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

இரண்டாவது புலம் (field) நிலையை (state) குறிக்கிறது: P என்பது பயன்படுத்தக்கூடிய கடவுச்சொல், L என்பது பூட்டப்பட்டது, NP என்பது கடவுச்சொல் இல்லை என்பதைக் குறிக்கும். அந்தத் தேதி கடவுச்சொல் கடைசியாக மாற்றப்பட்டதைக் குறிக்கிறது, எனவே அது இன்றைய தேதியைக் காட்ட வேண்டும். அதற்குப் பின்னால் உள்ள எண்கள் கீழே விவரிக்கப்பட்டுள்ள aging புலங்கள் ஆகும்.

மிகவும் பாதுகாப்பான நேரடிச் சோதனை sudo கட்டளையே ஆகும். sudo -k தற்காலிகமாகச் சேமிக்கப்பட்ட (cached) timestamp-ஐ நீக்குகிறது, மேலும் sudo -v புதிய கடவுச்சொல் உள்ளீட்டைக் கட்டாயப்படுத்துகிறது. புதிய கடவுச்சொல் அங்கு ஏற்றுக்கொள்ளப்பட்டால், PAM அதை ஏற்றுக்கொண்டது என்று அர்த்தம், உங்கள் session-ல் எந்த மாற்றமும் ஏற்படவில்லை.

sudo -k && sudo -v

மற்றொரு கணக்கைச் சோதிக்க, சலுகைகள் இல்லாத (unprivileged) shell-லிருந்து su - deploy கட்டளையை இயக்கவும். sudo su - deploy கட்டளையை இயக்க வேண்டாம், ஏனெனில் root பயனரிடம் கடவுச்சொல் கேட்கப்படாது, எனவே இந்தச் சோதனை எதையும் நிரூபிக்காது. தவறான கடவுச்சொல்லை உள்ளிட்டால் su: Authentication failure என்ற செய்தி தோன்றும்.

உண்மையான சோதனை என்பது உங்கள் laptop-லிருந்து புதிய SSH login செய்வது ஆகும், அதே நேரத்தில் உங்கள் தற்போதைய session-ஐத் திறந்து வைத்திருக்கவும்:

ssh -o PubkeyAuthentication=no deploy@203.0.113.10

இங்கு Permission denied (publickey). என்பது server கடவுச்சொல் அங்கீகாரத்தை (password authentication) வழங்கவில்லை என்று பொருள், எனவே கடவுச்சொல்லை மாற்றினாலும் உங்களால் உள்ளே நுழைய முடியாது. Permission denied, please try again. என்பது அது அங்கீகாரத்தை வழங்கியது, ஆனால் நீங்கள் உள்ளிட்ட கடவுச்சொல்லை நிராகரித்தது என்று பொருள்.

chage கட்டளையைப் பயன்படுத்தி அடுத்த முறை login செய்யும்போது கடவுச்சொல்லை மாற்றக் கட்டாயப்படுத்துதல்

sudo chage -d 0 deploy

-d 0 என்பது கடைசி கடவுச்சொல் மாற்றப்பட்ட தேதியை epoch காலத்திற்கு அமைக்கிறது, இதனால் PAM கடவுச்சொல் காலாவதியாகிவிட்டதாகக் கருதுகிறது. அடுத்த முறை interactive login செய்யும்போது, shell-ஐ வழங்குவதற்கு முன்பு தற்போதைய கடவுச்சொல்லையும், பின்னர் புதிய கடவுச்சொல்லையும் கேட்கும். sudo passwd -e deploy கட்டளையும் சரியாக இதையே செய்கிறது.

கடவுச்சொல் மூலம் interactive-ஆக login செய்யும் கணக்குகளுக்கு மட்டுமே இதைப் பயன்படுத்தவும். காலாவதியான கடவுச்சொல் key-based login-களையும் பாதிக்கும், ஏனெனில் key மூலம் authentication நடந்தாலும் sshd ஆனது PAM account நிலையைச் சரிபார்க்கும். இதனால், script மூலம் இயங்கும் ssh deploy@203.0.113.10 'systemctl restart app' தோல்வியடைந்து நின்றுவிடும்:

Password change required but no TTY available.

அந்த வரியைத் தொடர்ந்து எதுவும் இயங்காது, மேலும் அந்த job பூஜ்ஜியமற்ற (non-zero) exit code-ஐ மட்டுமே வழங்கும்.

Password aging புலங்கள் எதைக் குறிக்கின்றன

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

இந்த எண்கள் /etc/shadow கோப்பில் உள்ள அந்தப் பயனரின் வரியின் 4 முதல் 8 வரையிலான புலங்கள் ஆகும். Minimum days (chage -m) என்பது, ஒரு பயனர் தனது கடவுச்சொல்லை மாற்றிய பிறகு, மீண்டும் மாற்றுவதற்கு முன்பு காத்திருக்க வேண்டிய கால அளவு ஆகும்; இது கட்டாய மாற்றத்திற்குப் பிறகு உடனடியாக பழைய கடவுச்சொல்லுக்கே மாறுவதைத் தடுக்கிறது. Maximum days (chage -M) என்பது கடவுச்சொல் செல்லுபடியாகும் கால அளவு ஆகும். Warning days (chage -W) என்பது கடவுச்சொல் காலாவதியாவதற்கு முன்பு, உள்நுழையும்போது எச்சரிக்கை செய்தி காட்டப்படும் காலம் ஆகும். Inactive days (chage -I) என்பது கடவுச்சொல் காலாவதியான பிறகு, கணக்கு முடக்கப்படுவதற்கு முன்னால் வழங்கப்படும் கூடுதல் அவகாச காலம் ஆகும். Account expiry (chage -E) என்பது கணக்கு முடிவடையும் ஒரு குறிப்பிட்ட தேதியைக் குறிக்கிறது, இது கடவுச்சொல்லின் காலாவதியிலிருந்து தனிப்பட்டது.

sudo chage -M 90 -W 14 deploy

கொள்கை தேவைப்படும்போது மட்டுமே இதை அமைக்கவும். 2017 முதல், வழக்கமான கடவுச்சொல் காலாவதி முறையை NIST (அமெரிக்காவின் National Institute of Standards and Technology) பரிந்துரைப்பதில்லை. ஏனெனில், இது பயனர்களை ஒரே கடவுச்சொல்லின் எளிதில் யூகிக்கக்கூடிய மாற்றங்களை உருவாக்கத் தூண்டுகிறது. அதற்குப் பதிலாக, கணக்கு சமரசம் செய்யப்பட்டதற்கான ஆதாரம் இருக்கும்போது மட்டும் கடவுச்சொல்லை மாற்றும்படி கட்டாயப்படுத்துவதைப் பரிந்துரைக்கிறது. 90 நாள் சுழற்சியை விட, password manager-ல் சேமிக்கப்பட்ட நீண்ட மற்றும் தனித்துவமான கடவுச்சொல் மற்றும் key based SSH பயன்படுத்துவது அதிக பாதுகாப்பானது.

root password தொலைந்துவிட்டால் என்ன செய்வது

எந்தவொரு கணக்கும் sudo கட்டளையை இயக்க முடியும் என்றால், மீட்டெடுக்க எதுவும் இல்லை: sudo passwd root கட்டளை புதிய கடவுச்சொல்லை அமைத்துவிடும். சிக்கலான நிலை என்பது, எந்தவொரு login-ம் வேலை செய்யாதபோதுதான் ஏற்படும்.

கீழே கொடுக்கப்பட்டுள்ள அனைத்தும் provider console-ஐப் பயன்படுத்த வேண்டும். இது பெரும்பாலான control panel-களில் VNC (virtual network computing) அல்லது serial console என்று குறிப்பிடப்பட்டிருக்கும். இது network stack-க்கு அடியில் உள்ள virtual machine-உடன் இணைவதால், sshd அமைப்புகளோ அல்லது firewall விதிகளோ இதைப் பாதிக்காது.

  1. Panel மூலம் server-ஐ reboot செய்து, console-ஐக் கவனிக்கவும்.
  2. GRUB menu-வைப் பெறவும். Cloud images பொதுவாக GRUB_TIMEOUT=0 என்று அமைக்கப்பட்டிருக்கும். எனவே, BIOS boot என்றால் Shift விசையை அழுத்தவும், அல்லது UEFI boot என்றால் reboot தொடங்கியவுடன் Esc விசையைத் தொடர்ந்து அழுத்தவும்.
  3. Advanced options for Ubuntu என்பதைத் தேர்ந்தெடுக்கவும், பிறகு (recovery mode) என்று முடியும் entry-ஐத் தேர்வு செய்யவும், இறுதியாக recovery menu-வில் root என்பதைத் தேர்ந்தெடுக்கவும்.
  4. முதலில் mount -o remount,rw / கட்டளையை இயக்கவும். Recovery mode root filesystem-ஐ read-only நிலையில் mount செய்யும். இதைச் செய்யாவிட்டால், /etc/shadow கோப்பில் எழுத முடியாததால் passwd கட்டளை passwd: Authentication token manipulation error பிழையுடன் தோல்வியடையும்.
  5. உங்களுக்குத் தேவையான கணக்கிற்கு passwd ubuntu கட்டளையை இயக்கவும், பிறகு panel மூலம் server-ஐ reboot செய்யவும்.

ஏற்கனவே root-க்கு கடவுச்சொல் இருந்து, அதை நீங்கள் மறந்துவிட்டீர்கள் என்றால், அந்த recovery shell கடவுச்சொல்லைக் கேட்கும்; அந்த வழி மூடப்பட்டிருக்கும். அதற்குப் பதிலாக provider-ன் rescue image-ஐ boot செய்து, உண்மையான disk-ஐ mount செய்து, அதற்குள் கடவுச்சொல்லை மாற்றவும்.

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

இந்தப்பக்கத்தில் உள்ள /dev/vda1-ஐ நகலெடுப்பதற்குப் பதிலாக, lsblk மூலம் partition அமைப்பைப் படிக்கவும். Root partition என்பது பெரிய அளவிலான partition ஆகும். UEFI image-ல் இது சிறிய EFI partition-க்கு அருகில் இருக்கும், அதில் /etc directory இருக்காது.

SSH உங்கள் கடவுச்சொல்லை ஏற்க மறுக்கும்போது என்ன செய்ய வேண்டும்

தற்போது நீங்கள் வைத்திருக்கும் session-ஐப் பயன்படுத்திச் செயல்படுங்கள். எந்த session-ம் இல்லை என்றால், console-ஐப் பயன்படுத்தவும்.

Permission denied, please try again. என்பது, server கடவுச்சொல் அங்கீகாரத்தை (password authentication) வழங்கியதாகவும், நீங்கள் அனுப்பியதை நிராகரித்ததாகவும் பொருள்படும். இதற்கு வழக்கமான காரணங்கள் caps lock ஆன் செய்யப்பட்டிருப்பது அல்லது கடவுச்சொல்லை அமைக்கும்போது பயன்படுத்திய விசைப்பலகை அமைப்பிற்கும் (keyboard layout) தற்போதைய console விசைப்பலகை அமைப்பிற்கும் உள்ள வேறுபாடு ஆகும்.

Permission denied (publickey). என்பது, server கடவுச்சொல் அங்கீகாரத்தை வழங்கவே இல்லை என்று பொருள்படும். PasswordAuthentication no எங்காவது அமைக்கப்பட்டிருக்கும். Ubuntu 22.04 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில், இது பொதுவாக /etc/ssh/sshd_config.d/-ன் கீழ் உள்ள ஒரு drop-in கோப்பில் இருக்கும், இது முதன்மை கோப்பை மீறிச் செயல்படும் (override). நடைமுறையில் உள்ள மதிப்புகளைக் காண:

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

KbdInteractiveAuthentication yes மற்றும் PasswordAuthentication no ஆகியவற்றுடன் கடவுச்சொல் இன்னும் அனுமதிக்கப்படுகிறது, ஏனெனில் keyboard-interactive முறை அதே PAM stack-ஐ இயக்குகிறது. ஒன்றினை மட்டும் அணைத்துவிட்டு மற்றொன்றை ஆன் செய்து வைப்பது, key-only போலத் தோன்றும் ஒரு server தொடர்ந்து தட்டச்சு செய்யப்படும் கடவுச்சொற்களை ஏற்பதற்குக் காரணமாகிறது.

அதே வரியே நிராகரிக்கப்பட்ட key login-க்கும் காட்டப்படும். எனவே, நீங்கள் கடவுச்சொல்லுக்குப் பதிலாக key-ஐப் பயன்படுத்தியிருந்தால், server-ன் கடவுச்சொல் அமைப்பு என்பது Permission denied (publickey) பிழைக்குக் காரணமான ஐந்து குறைபாடுகளில் ஒன்று மட்டுமே. ssh -v வெளியீடு உங்களுக்கு எந்தப் பிரச்சனை உள்ளது என்பதைத் தெரிவிக்கும்.

துண்டிப்புச் செய்தியில் Too many authentication failures என்பது, உங்கள் client கடவுச்சொல்லை அடையும் முன் பல key-களை வழங்கியதையும், server MaxAuthTries-ஐ எட்டியதையும் குறிக்கும் (இது இயல்பாக 6 ஆக இருக்கும்). ஒரு குறிப்பிட்ட முறையை மட்டும் கட்டாயப்படுத்த:

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

சிறிது நேரத்திற்கு முன்பு வேலை செய்த port-ல் Connection refused என்பது, பொதுவாக fail2ban SSH-ஐக் கண்காணித்து உங்கள் முகவரியைத் தடை செய்துள்ளதைக் குறிக்கும். அதன் இயல்புநிலை தடை விதி, packet-ஐத் துண்டிப்பதற்குப் பதிலாக நிராகரிக்கும் (reject). இதனால்தான், நேரம் முடிவதற்கு முன்பே (timeout) மறுப்புச் செய்தி விரைவாக வருகிறது. Console-லிருந்து, sudo fail2ban-client status sshd தடைசெய்யப்பட்ட முகவரிகளின் பட்டியலைக் காட்டும், sudo fail2ban-client set sshd unbanip 203.0.113.10 உங்கள் முகவரியை நீக்கும்.

கடவுச்சொற்கள் ஒரு தொடக்கப்புள்ளி, SSH keys-தான் இறுதி நிலை

SSH வழியாகச் செயல்படும் ஒரு கடவுச்சொல்லை இணையத்தில் உள்ள அனைத்து scanner-களும் ஊகிக்க முயற்சிக்கும். Key-based authentication முறைக்கு மாறினால், இந்த ஊகங்கள் பயனற்றதாகிவிடும். ஒரு key pair-ஐ உருவாக்கி, public key-ஐ server-ல் பதிவேற்றவும். பிற மாற்றங்களைச் செய்வதற்கு முன், இரண்டாவது terminal மூலம் அந்த key சரியாக login செய்கிறதா என்பதை உறுதிப்படுத்தவும். SSH key மேலாண்மை அடிப்படைகள் பகுதியில் key உருவாக்கம், authorized_keys மற்றும் passphrases பற்றிய தகவல்கள் உள்ளன.

அதன்பின், password authentication-ஐ முடக்கவும். நீங்கள் மாற்றியமைத்த கோப்பை மட்டும் நம்பாமல், sudo sshd -T கட்டளையைப் பயன்படுத்தி அதை உறுதிப்படுத்தவும். VPS-ல் SSH-ஐ பாதுகாப்பாக்குதல் பகுதியில் மாற்ற வேண்டிய பிற sshd அமைப்புகள் விளக்கப்பட்டுள்ளன. புதிய VPS-ன் முதல் பத்து நிமிடங்கள் பகுதியில், ஒரு புதிய server-ல் இவற்றை எந்த வரிசையில் செய்ய வேண்டும் என்பது கொடுக்கப்பட்டுள்ளது.

அதன்பிறகும் ஒரு கடவுச்சொல்லை மட்டும் வைத்திருக்கவும். sshd configuration தவறாக அமைக்கப்பட்ட ஒரு key-only server-ஐ, provider console வழியாக மட்டுமே அணுக முடியும். அந்த console பயனர் பெயர் மற்றும் கடவுச்சொல்லைக் கேட்கும். பாதுகாப்பாகச் சேமித்து வைக்கப்பட்ட ஒரு வலுவான கடவுச்சொல் இருந்தால் மட்டுமே, ஐந்து நிமிடங்களில் சரிசெய்யக்கூடிய ஒரு சிக்கலுக்கு, server-ஐ மீண்டும் நிறுவ வேண்டிய அவசியத்தைத் தவிர்க்க முடியும்.

FAQ

எனது VPS-ல் பழைய root password தெரியவில்லை என்றால், அதை எப்படி மாற்றுவது?

sudo-ஐ இயக்கக்கூடிய ஒரு பயனர் கணக்கில் உள்நுழைந்து, sudo passwd root கட்டளையை இயக்கவும். இது பழைய கடவுச்சொல்லைக் கேட்காமல் புதிய கடவுச்சொல்லை அமைக்கும், ஏனெனில் sudo ஏற்கனவே உங்களை அங்கீகரித்துவிட்டது. சர்வரில் எந்தக் கணக்கிற்கும் sudo அனுமதி இல்லை என்றால், உங்கள் சேவை வழங்குநரின் (provider) கன்சோலைத் திறந்து, சர்வரை reboot செய்து GRUB recovery menu-க்குச் செல்லவும். அங்கு root shell-ஐத் தேர்ந்தெடுத்து, mount -o remount,rw / கட்டளையை இயக்கி, பின் passwd கட்டளையை இயக்கவும். root கணக்கிற்கு ஏற்கனவே கடவுச்சொல் இருந்து, அதை நீங்கள் மறந்துவிட்டீர்கள் என்றால், recovery shell அதைக் கேட்கும். அந்தச் சூழலில், வட்டை (disk) mount செய்து chroot செய்யப்பட்ட rescue image-ஐப் பயன்படுத்துவதே ஒரே வழி.

passwd கட்டளை ஏன் "Authentication token manipulation error" என்று காட்டுகிறது?

இந்தச் செய்தி வருவதற்கு இரண்டு காரணங்கள் உள்ளன. பொதுவாக, Current password: கேட்கப்படும்போது தவறான விடையளிப்பது ஒரு காரணம், அதன் கீழே உள்ள passwd: password unchanged வரி எதையும் எழுத முடியவில்லை என்பதை உறுதிப்படுத்தும். மற்றொன்று, கோப்பு முறைமையில் (filesystem) எழுத முடியாத நிலை. recovery mode-ல் / read-only முறையில் mount செய்யப்பட்டிருப்பதால், நீங்கள் இந்தச் சிக்கலைச் சந்திக்கலாம். mount -o remount,rw / கட்டளையை இயக்கிவிட்டு மீண்டும் முயற்சிக்கவும்.

எனது Linux கடவுச்சொல்லை மாற்றினால், அது எனது sudo கடவுச்சொல்லையும் மாற்றுமா?

ஆம். sudo-க்கு என்று தனி கடவுச்சொல் கிடையாது. இது PAM மூலம் SSH மற்றும் su பயன்படுத்தும் அதே /etc/shadow உள்ளீட்டை வைத்து உங்களை அங்கீகரிக்கிறது. எனவே, ஒரு கணக்கிற்கு ஒரு கடவுச்சொல் மட்டுமே இருக்கும். கடவுச்சொல்லை மாற்றிய பின் வரும் முதல் sudo கோரிக்கையே இதற்கான உண்மையான சோதனை. தற்போதைய session-ல் இருக்கும்போதே அதைச் சோதிக்க sudo -k && sudo -v கட்டளையை இயக்கவும்.

கடவுச்சொல்லை மாற்றினால் எனது SSH keys அல்லது open sessions பாதிக்கப்படுமா?

இல்லை. Public key authentication முறை /etc/shadow கோப்பை வாசிப்பதில்லை, எனவே கடவுச்சொல் மாற்றத்திற்குப் பிறகும், passwd -l மற்றும் chage -d 0 கட்டளைகளுக்குப் பிறகும் keys தொடர்ந்து வேலை செய்யும். ஏற்கனவே திறந்திருக்கும் sessions அப்படியே இருக்கும், ஏனெனில் SSH உள்நுழையும்போது மட்டுமே சான்றுகளைச் சரிபார்க்கும். ஒரு active session-ல் மாறும் ஒரே விஷயம் sudo ஆகும்; அதன் 15 நிமிட காலாவதி நேரம் முடிந்ததும், அது புதிய கடவுச்சொல்லைக் கேட்கும்.

அடுத்த முறை உள்நுழையும்போது பயனர் கடவுச்சொல்லை மாற்றும்படி எப்படி கட்டாயப்படுத்துவது?

sudo chage -d 0 deploy அல்லது அதே வேலையைச் செய்யும் sudo passwd -e deploy கட்டளையை இயக்கவும். கடவுச்சொல் மாற்றப்பட்ட கடைசித் தேதி epoch-க்கு மாற்றப்படும், PAM கடவுச்சொல் காலாவதியானதாகக் கருதும். அடுத்த முறை உள்நுழையும்போது, shell தொடங்குவதற்கு முன்பே புதிய கடவுச்சொல்லை அமைக்க வேண்டும். SSH மூலம் scripts இயக்கும் கணக்குகளுக்கு இதைச் செய்ய வேண்டாம்: அவ்வாறு செய்தால், non-interactive கட்டளைகள் Password change required but no TTY available. பிழையுடன் தோல்வியடைந்து இயங்காது.

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