SSH کو مضبوط کرنا: کیز، پورٹ، پابندیاں
sshd کیسے کنفیگر کریں: صرف کی سے لاگ ان، یوزرز اور ایڈریسز پر پابندی، پورٹ تبدیل کرنا، اور اس دوران رسائی کیسے نہ کھوئیں۔
اپ ڈیٹ 23 اگست، 2026
SSH آپ کی روزانہ استعمال ہونے والی مشین تک پہنچنے کا واحد دروازہ ہے، اور خودکار بروٹ فورس حملوں کا بنیادی ہدف بھی۔ آپ اسے ایک بار کنفیگر کرتے ہیں، اور اس کے بعد اسے کسی توجہ کی ضرورت نہیں رہتی۔
تمام تبدیلیاں ایک الگ فائل /etc/ssh/sshd_config.d/99-hardening.conf میں کریں — اس طرح پیکیج اپ ڈیٹ آپ کا کام اوور رائٹ نہیں کرے گا اور آپ کو رسائی سے محروم نہیں چھوڑے گا۔
پاس ورڈز کے بجائے کیز
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
لاگو کرنے سے پہلے یقینی بنائیں کہ کی واقعی کام کرتی ہے: ایک الگ ونڈو میں اس کے ذریعے لاگ ان کریں۔ /hosting/vds/m/<id> پینل کے "Access" ٹیب میں شامل کی گئی کیز root صارف کو جاتی ہیں؛ دوسرے صارفین کے لیے آپ کو انہیں دستی طور پر ~/.ssh/authorized_keys میں ڈالنا ہوگا۔
اپنی طرف کی بنائی گئی کی:
ssh-keygen -t ed25519 -C "work laptop"
ed25519 RSA سے چھوٹی اور تیز ہے۔ اگر آپ کا ٹول اسے سپورٹ نہیں کرتا، تو کم از کم 4096 بٹس کی لمبائی کے ساتھ rsa استعمال کریں۔
کون لاگ ان کر سکتا ہے
PermitRootLogin prohibit-password
AllowUsers artem deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
پاس ورڈز غیر فعال کرنے کے بعد AllowUsers سب سے مؤثر اصول ہے: دوسروں کے ناموں پر بروٹ فورس فوراً رک جاتی ہے۔ root کے بارے میں مزید — پاس ورڈ کے ذریعے root لاگ ان غیر فعال کریں۔
ایک ایڈریس کی پابندی، اگر آپ کسی مقررہ جگہ سے کام کرتے ہیں:
Match Address 203.0.113.5
PermitRootLogin yes
پورٹ تبدیل کرنا
SSH کو 22 سے غیر معیاری پورٹ پر منتقل کرنا آپ کو ہدف بنائے گئے حملے سے محفوظ نہیں کرتا، لیکن یہ آپ کے لاگز میں خودکار اسکینرز کا تقریباً تمام شور ختم کر دیتا ہے۔
Port 2222
اقدامات کی ترتیب بالکل یہی ہے:
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
ssh -p 2222 artem@<address>
ufw delete allow 22/tcp
فائر وال کا اصول ری اسٹارٹ سے پہلے آتا ہے، اور پرانے کو ہٹانا صرف نئے پورٹ پر کامیاب لاگ ان کے بعد۔ پورٹس بھی دیکھیں۔
لاگو کرنا اور تصدیق کرنا
sshd -t
sshd -T | grep -Ei "passwordauth|permitroot|allowusers|port"
systemctl restart ssh
sshd -t نحو کی جانچ کرتا ہے، sshd -T حتمی مؤثر کنفیگریشن دکھاتا ہے — وہی، نہ کہ جو آپ نے فائل میں لکھی۔
کنفیگر کرتے وقت اپنا موجودہ سیشن کھلا رکھیں۔ یہ sshd ری اسٹارٹ سے بچ جائے گا، اور اس کے ذریعے آپ ناکام ترمیم کو واپس کر سکتے ہیں۔ اگر آپ واقعی خود کو لاک آؤٹ کر لیں — پینل کا "Console" ٹیب SSH سے آزادانہ کام کرتا ہے۔
عام غلطیاں
| غلطی | نتیجہ | حل |
|---|---|---|
| کی ٹیسٹ کیے بغیر پاس ورڈز غیر فعال کرنا | نیٹ ورک رسائی مکمل طور پر ختم | پینل کنسول کے ذریعے لاگ ان کریں اور سیٹنگ بحال کریں |
sshd_config.d کی لائن کے اوپر مرکزی فائل میں ترمیم | سیٹنگ لاگو نہیں ہوتی | sshd -T سے جانچ کریں |
| ufw اصول کے بغیر پورٹ تبدیل کرنا | رسائی ختم | پہلے اصول، پھر پورٹ |
~/.ssh پر 700 سے وسیع اجازتیں | کی خاموشی سے نظر انداز ہو جاتی ہے | chmod 700 ~/.ssh، chmod 600 authorized_keys |
اپنا نام شامل کیے بغیر AllowUsers | آپ خود کو لاک آؤٹ کر لیتے ہیں | پینل کنسول، فائل میں ترمیم کریں |
sshd_configمیں، کسی پیرامیٹر کی پہلی موجودگی جیت جاتی ہے، اورsshd_config.dکی فائلیں شروع میں شامل کی جاتی ہیں۔ لہٰذا فائل پڑھنے کے بجائےsshd -Tسے نتیجے کی تصدیق کریں۔
fail2ban باقی بروٹ فورس شور کو ختم کر دے گا۔