வழிகாட்டி

SSH விசைகள்: கடவுச்சொல் இல்லாமல் சேவையகத்தில் உள்நுழைவை அமைத்தல்

புதுப்பிக்கப்பட்டது: · Skillaria.Top

SSH விசை அமைப்பில் மூன்று படிகள் உள்ளன: ssh-keygen -t ed25519 மூலம் விசை இணை உருவாக்கம், ssh-copy-id user@host மூலம் பொது விசையை சேவையகத்துக்கு நகலெடுத்தல், உள்நுழைவைச் சரிபார்த்தல். அதன் பிறகு /etc/ssh/sshd_config-இல் கடவுச்சொல் உள்நுழைவு நிறுத்தப்படுகிறது (PasswordAuthentication no); அடிக்கடி பயன்படும் இணைப்புகள் ~/.ssh/config-இல் வரையறுக்கப்படுகின்றன.

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

விசை அடிப்படையிலான அங்கீகாரம் எப்படி வேலை செய்கிறது

விசைகள் சமச்சீரற்றவை. பொது விசையை (id_ed25519.pub) யாருக்கு வேண்டுமானாலும் காட்டலாம் — அதிலிருந்து தனிப்பட்ட விசையை மீட்க முடியாது. தனிப்பட்ட விசை (id_ed25519) உங்கள் கணினியை விட்டு வெளியே போவதில்லை, பிணையத்தில் அனுப்பப்படுவதுமில்லை.

உள்நுழையும்போது கிளையன்ட் எந்த விசையைப் பயன்படுத்த விரும்புகிறது என்று சேவையகத்துக்குச் சொல்கிறது. சேவையகம் பயனரின் ~/.ssh/authorized_keys-இல் அந்தப் பொது விசையைத் தேடுகிறது; கிடைத்தால், அமர்வுத் தரவில் தனிப்பட்ட விசையால் கையொப்பமிடுமாறு கிளையன்ட்டைக் கேட்கிறது. கையொப்பம் பொது விசையால் சரிபார்க்கப்பட்டு உள்நுழைவு அனுமதிக்கப்படுகிறது. கடவுச்சொல் எதுவும் அனுப்பப்படுவதில்லை.

படி 1. விசை உருவாக்குதல்: ssh-keygen

உங்கள் கணினியில் (Linux, macOS, அல்லது உள்ளமைந்த OpenSSH கொண்ட Windows 10/11) இயக்குங்கள்:

ssh-keygen -t ed25519 -C "alena@laptop"

-t வழிமுறையைத் தேர்ந்தெடுக்கிறது; -C ஒரு குறிப்பு, அது பொது விசையின் இறுதியில் சேர்க்கப்பட்டு யாருடைய விசை என்று பின்னர் அடையாளம் காண உதவுகிறது. Ed25519 பரிந்துரைக்கப்படும் நவீன வழிமுறை: விசைகள் சிறியவை, வேகமானவை, வலிமையானவை. சேவையகம் மிகவும் பழையதாக Ed25519-ஐ ஆதரிக்கவில்லை என்றால், குறைந்தது 3072 பிட் நீளமுள்ள RSA-ஐப் பயன்படுத்துங்கள்: ssh-keygen -t rsa -b 4096.

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/alena/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/alena/.ssh/id_ed25519
Your public key has been saved in /home/alena/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Xq3v0m6c1y2pVv8m3N0uYv9yQm0e6dFv5gH2rZt1aBc alena@laptop

கடவுச்சொற்றொடர் (passphrase) தேவையா

Passphrase தனிப்பட்ட விசையை வட்டில் என்க்ரிப்ட் செய்கிறது. லேப்டாப் திருடப்பட்டாலோ கோப்பு கசிந்தாலோ, passphrase இல்லாமல் விசை தாக்குபவருக்குப் பயனற்றது. தனிப்பட்ட விசைக்கு passphrase வைப்பது நல்லது; ஒவ்வொரு இணைப்புக்கும் அதை உள்ளிடாமல் இருக்க ssh-agent பயன்படுத்துங்கள்: அது திறக்கப்பட்ட விசையை அமர்வு முடியும் வரை நினைவகத்தில் வைத்திருக்கும்.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -l      # ஏற்றப்பட்ட விசைகளின் பட்டியல்

தானியங்கி வேலைகளுக்கு — எடுத்துக்காட்டாக CI அல்லது காப்புப் பிரதி ஸ்கிரிப்ட் — passphrase இல்லாத விசை ஏற்கத்தக்கது. அத்தகைய விசையை சேவையகப் பக்கத்தில் கட்டுப்படுத்துவது நல்லது (கீழே காண்க).

படி 2. பொது விசையை சேவையகத்துக்கு நகலெடுத்தல்: ssh-copy-id

எளிய வழி ssh-copy-id. அது ஒருமுறை கடவுச்சொல்லுடன் இணைந்து, உங்கள் பொது விசையை சேவையகத்தின் ~/.ssh/authorized_keys-இல் சேர்த்து, சரியான அனுமதிகளை அமைக்கும்.

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@203.0.113.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/alena/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
deploy@203.0.113.10's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'deploy@203.0.113.10'"
and check to make sure that only the key(s) you wanted were added.

சேவையகம் நிலையற்ற போர்ட்டில் கேட்டால், -p 2222 சேர்க்கவும்.

ssh-copy-id கிடைக்கவில்லை என்றால்

Windows-இல் ssh-copy-id கிடையாது. ஒரே கட்டளையில் விசையை கைமுறையாக அனுப்பலாம்:

cat ~/.ssh/id_ed25519.pub | ssh deploy@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

கிளவுட் வழங்குநர்கள் பொதுவாக சேவையகத்தை உருவாக்கும்போதே பொது விசையைக் கேட்பார்கள் — அது cloud-init மூலம் authorized_keys-இல் சேரும்.

படி 3. உள்நுழைவைச் சரிபார்த்தல்

ssh deploy@203.0.113.10

இனி கடவுச்சொல் கேட்கப்படவில்லை என்றால் (அல்லது விசையின் passphrase மட்டும் கேட்டால்), எல்லாம் வேலை செய்கிறது. புதிய சேவையகத்துடன் முதல்முறை இணையும்போது, SSH சேவையக விசையின் fingerprint-ஐக் காட்டி நம்புகிறீர்களா என்று கேட்கும். yes என்று பதிலளித்தால், fingerprint ~/.ssh/known_hosts-இல் சேமிக்கப்படும்; பின்னர் சேவையகத்தின் விசை மாறினால் SSH எச்சரிக்கும்.

எந்த விசையை கிளையன்ட் முயற்சிக்கிறது, சேவையகம் ஏன் மறுக்கிறது என்று பார்க்க, விரிவான வெளியீட்டுடன் இணையுங்கள்:

ssh -v deploy@203.0.113.10

~/.ssh/config கோப்பு: சேவையகங்களுக்கு குறுகிய பெயர்கள்

பல சேவையகங்கள் இருந்தால், ஒவ்வொரு முறையும் பயனர், IP, போர்ட், விசையின் பாதை ஆகியவற்றைத் தட்டச்சு செய்வது சிரமம். இவற்றை ~/.ssh/config-இல் எழுதலாம்:

Host prod
    HostName 203.0.113.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Host bastion
    HostName bastion.example.com
    User alena

Host db-internal
    HostName 10.0.0.15
    User admin
    ProxyJump bastion

Host *
    ServerAliveInterval 60
    AddKeysToAgent yes

இனி ssh prod என்று தட்டச்சு செய்தால் போதும்; scp, rsync, Git ஆகியவையும் இந்தப் பெயர்களைப் புரிந்துகொள்ளும்: rsync -av ./site/ prod:/var/www/.

  • IdentitiesOnly yes — குறிப்பிட்ட விசையை மட்டும் பயன்படுத்தும். இந்த வரி இல்லையென்றால், கிளையன்ட் முகவரில் உள்ள எல்லா விசைகளையும் முயற்சிக்கும்; சரியான விசையை அடைவதற்கு முன்பே சேவையகம் முயற்சிகளின் வரம்பைத் தாண்டி இணைப்பை மூடலாம்.
  • ProxyJump — இடைநிலை சேவையகம் (bastion) வழியாக உள் சேவையகத்தை ஒரே கட்டளையில் அடைய.
  • ServerAliveInterval — ஒவ்வொரு 60 வினாடிக்கும் "பிங்" அனுப்பும்; செயலற்ற நிலையில் இணைப்பு துண்டிக்கப்படாமல் இருக்கும்.

கோப்பின் அனுமதி 600 ஆக இருக்க வேண்டும், இல்லையென்றால் SSH அதைப் படிக்க மறுக்கலாம்: chmod 600 ~/.ssh/config.

Agent forwarding: எப்போது தேவை, ஏன் ஆபத்து

சேவையகத்திலிருந்து மேலும் தொலைவில் இணைக்க வேண்டியிருக்கலாம் — எடுத்துக்காட்டாக ஒரு தனிப்பட்ட களஞ்சியத்திலிருந்து git pull. அங்கே தனிப்பட்ட விசையை நகலெடுக்கக்கூடாது. அதற்குப் பதில் ssh -A அல்லது ForwardAgent yes பயன்படுத்தப்படுகிறது: அமர்வின்போது சேவையகம் உங்கள் முகவரை அணுகும். ஆனால் அந்தச் சேவையகத்தின் root உரிமை உள்ளவர், நீங்கள் இணைந்திருக்கும்போது உங்கள் முகவரைப் பயன்படுத்தலாம். எனவே நம்பகமான ஹோஸ்ட்களுக்கு மட்டும் forwarding இயக்குங்கள்; இடைநிலை சேவையகங்களுக்கு ProxyJump-ஐ விரும்புங்கள் — அது முகவரைத் திறப்பதில்லை.

படி 4. கடவுச்சொல் உள்நுழைவை நிறுத்துதல்

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

/etc/ssh/sshd_config-ஐத் திறக்கவும் (அல்லது பிரதான உள்ளமைவு Include உத்தரவால் /etc/ssh/sshd_config.d/-ஐ ஏற்றினால், அங்கே ஒரு கோப்பை உருவாக்கவும்), பின்னர் எழுதவும்:

PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

PermitRootLogin no root ஆக உள்நுழைவதை முற்றிலும் தடுக்கிறது: நிர்வாகிகள் தங்கள் பயனர் பெயர்களில் உள்நுழைந்து sudo மூலம் சலுகைகளை உயர்த்துகிறார்கள். root உள்நுழைவு கட்டாயம் என்றால் PermitRootLogin prohibit-password — விசை மூலம் மட்டும்.

தொடரியலைச் சரிபார்த்து சேவையை மீண்டும் ஏற்றவும்:

sudo sshd -t
sudo systemctl reload ssh      # Debian/Ubuntu-இல்; RHEL குடும்பத்தில் — sshd

உள்ளமைவு சரியாக இருந்தால் sshd -t எதையும் காட்டாது. இப்போது புதிய டெர்மினலில் விசையால் உள்நுழைவது வேலை செய்கிறதா, கடவுச்சொல்லால் சேவையகம் மறுக்கிறதா என்று உறுதிசெய்யுங்கள்:

$ ssh -o PubkeyAuthentication=no deploy@203.0.113.10
deploy@203.0.113.10: Permission denied (publickey).

கூடுதல் பாதுகாப்பு

கடவுச்சொல்லை நிறுத்துவது முக்கிய நடவடிக்கை. அதன் பின் பொதுவாக போர்ட் 22-க்கான அணுகல் ஃபயர்வால் மூலம் கட்டுப்படுத்தப்படுகிறது (ufw allow from 198.51.100.0/24 to any port 22), மேலும் பல தோல்வியுற்ற முயற்சிகளுக்குப் பின் IP-ஐத் தடுக்கும் fail2ban நிறுவப்படுகிறது. SSH பாதுகாப்பு நிலையை sudo fail2ban-client status sshd காட்டும்.

தானியங்கி வேலைக்கான விசையை authorized_keys-இல் விசைக்கு முன்னுள்ள விருப்பங்களால் கட்டுப்படுத்தலாம்: எடுத்துக்காட்டாக from="198.51.100.7",no-port-forwarding,no-pty ssh-ed25519 AAAA... backup ஒரு முகவரியிலிருந்து மட்டும், ஊடாடும் ஷெல் இல்லாமல் உள்நுழைவை அனுமதிக்கும்.

பொதுவான பிழைகளும் தீர்வுகளும்

Permission denied (publickey)

இதுவே மிகப் பொதுவான பிழை. காரணங்கள், பொதுவானவற்றிலிருந்து அரிதானவை வரை:

  1. சேவையகத்தில் தவறான அனுமதிகள். கோப்பகமோ கோப்போ மற்றவர்களால் எழுதக்கூடியதாக இருந்தால் sshd authorized_keys-ஐப் புறக்கணிக்கும். தீர்வு: chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys, முகப்புக் கோப்பகம் குழு அல்லது மற்றவர்களால் எழுதக்கூடியதாக இருக்கக் கூடாது.
  2. தவறான உரிமையாளர். கோப்புகள் sudo மூலம் உருவாக்கப்பட்டிருந்தால் அவை root-க்குச் சொந்தம். தீர்வு: sudo chown -R deploy:deploy /home/deploy/.ssh.
  3. விசை தவறான பயனருக்கு வைக்கப்பட்டது. root-க்கான விசையை நகலெடுத்துவிட்டு deploy ஆக உள்நுழைவது, அல்லது அதற்கு நேர்மாறாக.
  4. கிளையன்ட் தவறான விசையை வழங்குகிறது. ssh -v பாருங்கள்: Offering public key வரிகளில் எந்த விசைகள் முயற்சிக்கப்படுகின்றன என்று தெரியும். -i அல்லது IdentityFile மூலம் சரியான விசையைக் குறிப்பிடுங்கள்.
  5. நகலெடுக்கும்போது விசை சிதைவு. பொது விசை ஒரே வரியில் இருக்க வேண்டும். கிளிப்போர்டிலிருந்து வரி உடைந்தால் விசை பழுதாகும்.

சேவையகப் பக்கக் காரணத்தை பதிவு காட்டும்: sudo journalctl -u ssh -n 30 (RHEL-இல் -u sshd). அங்கே இப்படிப்பட்ட வரிகள் தோன்றும்: Authentication refused: bad ownership or modes for directory /home/deploy/.ssh.

UNPROTECTED PRIVATE KEY FILE

மற்ற பயனர்கள் படிக்கக்கூடிய தனிப்பட்ட விசையை கிளையன்ட் பயன்படுத்த மறுக்கிறது. தீர்வு: chmod 600 ~/.ssh/id_ed25519.

REMOTE HOST IDENTIFICATION HAS CHANGED

ஹோஸ்ட் விசை known_hosts-இல் சேமிக்கப்பட்டதுடன் பொருந்தவில்லை. சேவையகம் மீண்டும் நிறுவப்பட்டாலோ IP மாறினாலோ இது நடக்கும்; ஆனால் "man-in-the-middle" தாக்குதலிலும் இதே காட்சி தோன்றும். சேவையகம் உண்மையிலேயே மறுஉருவாக்கப்பட்டதா என்று உறுதிசெய்து, பழைய உள்ளீட்டை நீக்குங்கள்: ssh-keygen -R 203.0.113.10.

Too many authentication failures

முகவர் சேவையகத்துக்கு அதிக விசைகளை அனுப்பிவிட்டது; MaxAuthTries காரணமாக சேவையகம் இணைப்பை மூடிவிட்டது. தீர்வு: IdentitiesOnly yes மற்றும் ~/.ssh/config-இல் தெளிவான IdentityFile.

சுருக்கம்

SSH விசை அமைப்பு ஐந்து நிமிட வேலை: ssh-keygen -t ed25519, ssh-copy-id, உள்நுழைவைச் சரிபார்த்தல், பின்னர் PasswordAuthentication no மற்றும் இரண்டாவது அமர்வைத் திறந்து வைத்தபடி sshd-ஐ மீண்டும் ஏற்றுதல். ~/.ssh/config நீண்ட கட்டளைகளைக் குறைக்கிறது; 700/600 அனுமதிகள் பெரும்பாலான "Permission denied" பிழைகளைத் தீர்க்கின்றன. SSH, rsync, ஃபயர்வால் மற்றும் fail2ban மூலம் சேவையகப் பாதுகாப்பு ஆகியவை லினக்ஸ் பாடநெறியில் நடைமுறையுடன் கற்பிக்கப்படுகின்றன.

அடிக்கடி கேட்கப்படும் கேள்விகள்

எல்லா சேவையகங்களுக்கும் ஒரே SSH விசையைப் பயன்படுத்தலாமா?

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

Windows-இல் SSH விசைகள் எங்கே இருக்கின்றன?

உள்ளமைந்த OpenSSH அவற்றை C:\Users\பெயர்\.ssh\-இல் வைக்கிறது — அங்கே id_ed25519, id_ed25519.pub, known_hosts, config ஆகியவை இருக்கும். PowerShell-இல் அதே ssh-keygen கட்டளையால் அவை உருவாக்கப்படுகின்றன.

ஏற்கனவே உள்ள விசையின் passphrase-ஐ எப்படி மாற்றுவது?

ssh-keygen -p -f ~/.ssh/id_ed25519 இயக்குங்கள்: பழைய மற்றும் புதிய passphrase கேட்கும். விசை தானே மாறாது; சேவையகங்களுக்கு மீண்டும் நகலெடுக்க வேண்டியதில்லை.

விசை மூலம் அணுகலை எப்படி ரத்து செய்வது?

சேவையகத்தில் ~/.ssh/authorized_keys-இலிருந்து அந்தப் பொது விசையின் வரியை நீக்குங்கள். விசையின் இறுதியில் உள்ள குறிப்பு சரியான வரியைக் கண்டறிய உதவும்.

தனிப்பட்ட விசை மட்டும் இருந்தால் பொது விசையை எப்படிப் பெறுவது?

ssh-keygen -y -f ~/.ssh/id_ed25519 கட்டளை தனிப்பட்ட விசையிலிருந்து கணக்கிடப்பட்ட பொது விசையைக் காட்டும்.

இந்தத் தலைப்பை வீடியோவில் கற்றுக்கொள்ளுங்கள்

“Linux: с нуля до уверенного администрирования” பாடநெறியில் இந்தத் தலைப்பு பயிற்சியுடன் விரிவாக விளக்கப்பட்டுள்ளது.

பாடநெறிக்குச் செல்