یہ ماڈیول کیا کرتا ہے #
SSH آپ کے سرور میں داخلے کا راستہ ہے: وہ خفیہ کردہ چینل جس کے ذریعے آپ اسے چلانے کے لیے جڑتے ہیں۔ یہ یقینی بنانا کہ وہ دروازہ ٹھیک سے لگا ہو —درست کیز کے ساتھ اور بغیر کسی اضافی تالے کے— ہی ایک محفوظ سرور کو ایک بے نقاب سرور سے الگ کرتا ہے۔
ssh ماڈیول اُس ریموٹ رسائی کے کاموں کو ایک ہی کمانڈ میں جمع کر دیتا ہے: یہ صارف کی مجاز کیز کو منظم کرتا ہے (شامل کریں، فہرست بنائیں، ہٹائیں)، اُن ہوسٹ کیز کو کنٹرول کرتا ہے جن کے ذریعے سرور کلائنٹس کے سامنے اپنی شناخت کراتا ہے، فعال سیشنز دکھاتا ہے، اور آپ کی کنفیگریشن میں متعین sshd سختی کی جانچ یا دوبارہ اطلاق کرتا ہے۔ ہر وہ آپریشن جو sshd کو چھوتا ہے پہلے کنفیگریشن کی توثیق کرتا ہے (sshd -t) تاکہ کوئی غلط تبدیلی آپ کو باہر بند نہ کر دے۔
جب آپ کیز بدلیں یا sshd کو ری اسٹارٹ کریں تو ایک سیشن کھلا رکھیں: اس طرح، اگر کچھ غلط ہو جائے، تو آپ اسے ٹھیک کرنے کے لیے اندر موجود رہتے ہیں۔ طے شدہ طور پر ماڈیول زیرِ انتظام صارف ubuntu پر کام کرتا ہے؛ کسی اور پر کام کرنے کے لیے --user استعمال کریں۔
عام کام #
جو آپ کرنا چاہتے ہیں اسے منتخب کریں۔ ہر ترکیب کمانڈ پہلے سے لکھی ہوئی لاتی ہے — بس اپنا صارف یا کی ڈال دیں، اور کاپی کریں دبائیں۔
1
SSH رسائی کی حالت دیکھیں
ایک نظر میں جانچیں کہ sshd فعال اور درست کنفیگر شدہ ہے۔
اپنے سرور سے ubuntu صارف کے ساتھ SSH کے ذریعے جڑیں اور چلائیں:
$ sudo imaxe ssh statusکسی اسکرپٹ کے لیے درکار ہے؟ --json شامل کریں اور آپ کو وہی معلومات مشین کے پڑھنے کے قابل شکل میں ملیں گی:
$ sudo imaxe ssh status --jsonsshd فعال ہے، یہ کس پورٹ پر سنتا ہے، اور لاگو کی گئی سختی کا خلاصہ۔2
کوئی مجاز کی شامل یا ہٹائیں
کسی نئی مشین کو رسائی دیں یا جو اب استعمال نہیں کرتے اسے منسوخ کریں۔
پہلے دیکھیں کہ زیرِ انتظام صارف کے لیے اِس وقت کون سی کیز مجاز ہیں:
$ sudo imaxe ssh keys listکوئی پبلک کی اسے آرگیومنٹ کے طور پر دے کر شامل کریں (یا اسے معیاری ان پٹ سے پڑھنے کے لیے - استعمال کریں):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"اب اس کی ضرورت نہیں؟ اسے اس کے fingerprint یا اس کے تبصرے سے ہٹائیں:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys اپ ڈیٹ ہو جاتی ہے۔ نتیجہ keys list کے ساتھ جانچیں۔3
کلوننگ کے بعد ہوسٹ کیز دوبارہ بنائیں
کسی AMI سے مشین بنانے کے بعد ناگزیر۔
جب آپ کوئی امیج کلون کرتے ہیں، تو ہر نقل وہی سرور شناخت وراثت میں پاتی ہے۔ اِس مشین کے لیے تازہ، منفرد ہوسٹ کیز پیدا کریں:
$ sudo imaxe ssh hostkeys regenerate --yes4
سختی کا جائزہ لیں اور دوبارہ لاگو کریں
جانچیں کہ sshd ابھی بھی جیسے ہونا چاہیے ویسے کنفیگر ہے، اور اگر نہیں تو اسے ٹھیک کریں۔
موجودہ سختی کا مطلوبہ سختی سے موازنہ کریں (وہ جو آپ کی کنفیگریشن متعین کرتی ہے):
$ sudo imaxe ssh harden showکوئی فرق ہے؟ YAML سے سختی دوبارہ لاگو کریں اور sshd کو محفوظ طریقے سے دوبارہ لوڈ کریں:
$ sudo imaxe ssh harden reapplysshd آپ کا سیشن گرائے بغیر دوبارہ لوڈ ہوتا ہے۔5
سیشنز دیکھیں اور sshd ری اسٹارٹ کریں
دیکھیں کون جڑا ہوا ہے اور خود کو باہر بند کرنے کے خوف کے بغیر تبدیلیاں لاگو کریں۔
اِس وقت فعال SSH سیشنز کی فہرست بنائیں:
$ sudo imaxe ssh sessionsکنفیگریشن کی تبدیلیاں لاگو کرنے کے لیے reload کو ترجیح دیں (یہ کنکشن نہیں گراتا)؛ restart صرف اسی وقت استعمال کریں جب مکمل ری اسٹارٹ درکار ہو۔ دونوں پہلے کنفیگریشن کی توثیق کرتے ہیں:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartsshd کو ری اسٹارٹ کرنے یا پورٹ بدلنے سے پہلے، ایک دوسرا ہنگامی سیشن کھلا رکھیں۔ اگر hostkeys regenerate کے بعد دوبارہ جڑنے پر آپ کو مختلف host key کی وارننگ ملے، تو یہ متوقع ہے: نئی شناخت قبول کریں۔
نحو #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]وہ آپریشنز جو sshd، مجاز کیز یا ہوسٹ کیز کو پڑھتے یا تبدیل کرتے ہیں، انہیں root کے مراعات درکار ہیں (sudo استعمال کریں)۔ keys، hostkeys اور harden گروپ اپنی اپنی نیسٹڈ ذیلی کمانڈز کو جمع کرتے ہیں۔ scripting کے لیے موزوں آؤٹ پٹ کے لیے status، sessions، keys list یا harden show میں --json شامل کریں۔
ذیلی کمانڈز #
| ذیلی کمانڈ | یہ کیا کرتا ہے | متعلقہ فلیگز |
|---|---|---|
| status | sshd کی حالت: فعال، پورٹ اور سختی کا خلاصہ۔ | --json |
| keys list | زیرِ انتظام صارف کی مجاز کیز کی فہرست بناتا ہے۔ | --user, --json |
| keys add | ایک پبلک کی شامل کرتا ہے (آرگیومنٹ یا stdin سے)۔ | --user, --comment |
| keys remove | کسی کی کو fingerprint یا تبصرے سے ہٹاتا ہے۔ | --user |
| hostkeys regenerate | ہوسٹ کیز دوبارہ بناتا ہے (AMI کلون کرنے کے بعد نہایت اہم؛ fingerprint بدل دیتا ہے)۔ | --yes |
| sessions | فعال SSH سیشنز کی فہرست بناتا ہے۔ | --json |
| harden show | موجودہ سختی کو مطلوبہ کے مقابل دکھاتا ہے۔ | --json |
| harden reapply | YAML سے سختی دوبارہ لاگو کرتا ہے اور sshd دوبارہ لوڈ کرتا ہے۔ | — |
| restart | sshd کو ری اسٹارٹ کرتا ہے، پہلے کنفیگریشن کی توثیق کرتے ہوئے (sshd -t)۔ | — |
| reload | sshd کو دوبارہ لوڈ کرتا ہے، پہلے کنفیگریشن کی توثیق کرتے ہوئے (sshd -t)۔ | — |
آرگیومنٹس اور فلیگز #
| آرگیومنٹ / فلیگ | قسم | طے شدہ | تفصیل |
|---|---|---|---|
| <clave> لازمی | string | — | keys add میں: پبلک کی، یا اسے stdin سے پڑھنے کے لیے -۔ |
| <selector> لازمی | string | — | keys remove میں: ہٹائی جانے والی کی کا fingerprint (SHA256:...) یا تبصرہ۔ |
| --user | string | ubuntu | وہ صارف جس کی authorized_keys پر استفسار یا ترمیم کی جاتی ہے (keys list/add/remove میں)۔ |
| --comment | string | — | keys add میں: کی کے ساتھ منسلک تبصرہ تاکہ بعد میں اسے پہچانا جا سکے۔ |
| --yes | bool | false | hostkeys regenerate میں: بغیر پوچھے تصدیق کرتا ہے (کلائنٹس کو نظر آنے والا fingerprint بدل دیتا ہے)۔ |
| --json | bool | false | status، sessions، keys list اور harden show میں: نتیجہ stdout پر JSON کے طور پر جاری کرتا ہے۔ |
فائلیں اور راستے #
| راستہ | مواد |
|---|---|
| /etc/imaxe/ssh.yml | ماڈیول کی کنفیگریشن: پورٹ، لاگ اِن پالیسیاں (root، پاس ورڈ، پبلک کی)، اجازت یافتہ صارفین، زیرِ انتظام صارف اور ہوسٹ کی کی دوبارہ تخلیق۔ |
| /home/<usuario>/.ssh/authorized_keys | زیرِ انتظام صارف کی مجاز پبلک کیز جنہیں keys add/remove تبدیل کرتے ہیں۔ |
| /etc/ssh/sshd_config.d/ | sshd کنفیگریشن کے ٹکڑے جہاں سختی لاگو کی جاتی ہے۔ |
| /etc/ssh/ssh_host_*_key | ہوسٹ کیز جو سرور کی شناخت کرتی ہیں اور جنہیں hostkeys regenerate تجدید کرتا ہے۔ |
ssh.yml کی مثال:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueایگزٹ کوڈز اور لاگز #
ہر عملدرآمد ایک کوڈ لوٹاتا ہے جسے آپ echo $? کے ساتھ جانچ سکتے ہیں — اسکرپٹس میں سلسلہ بنانے کے لیے مفید:
sshd -t کی توثیق ناکام ہوئی؛ کچھ لاگو نہیں ہوا۔ڈی بگ کرتے وقت سروس کے لاگ کو لائیو دیکھیں:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonمسائل کا حل #
| علامت | ممکنہ وجہ | حل |
|---|---|---|
| CONFIG (کوڈ 3) نکلتا ہے | سختی یا کسی دستی تبدیلی نے sshd کو غلط کنفیگریشن کے ساتھ چھوڑ دیا۔ | imaxe ssh harden show کے ساتھ فرق کا جائزہ لیں اور اسے ٹھیک کریں؛ توثیق کسی خراب کنفیگ کے اطلاق کو روکتی ہے۔ |
| دوبارہ جڑنے پر، ایک مختلف host key وارننگ | ہوسٹ کیز دوبارہ بنائی گئیں (AMI کلون کرنے کے بعد متوقع)۔ | یہ معمول کی بات ہے: کلائنٹ پر نئی شناخت قبول کریں اور اپنی known_hosts اپ ڈیٹ کریں۔ |
keys add NOTFOUND (کوڈ 4) لوٹاتا ہے | --user میں دیا گیا صارف سسٹم پر موجود نہیں۔ | صارف نام جانچیں یا طے شدہ زیرِ انتظام صارف (ubuntu) استعمال کریں۔ |
| میں اب پاس ورڈ سے لاگ اِن نہیں کر سکتا | سختی کے ذریعے password_authentication کو "no" پر سیٹ کر دیا گیا ہے۔ | یہ جان بوجھ کر ہے: کسی پبلک کی سے لاگ اِن کریں اور انہیں imaxe ssh keys کے ساتھ منظم کریں۔ |
کیا SSH ماڈیول کے ساتھ اٹک گئے ہیں؟
«imaxe <module> status --json» کے آؤٹ پٹ کے ساتھ ہمیں لکھیں اور ہم فوراً جواب دیں گے۔