এই মডিউল কী করে #
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 দিয়ে diff পর্যালোচনা করে ঠিক করো; যাচাই একটি ভাঙা কনফিগ প্রয়োগ হওয়া রোধ করে। |
| পুনঃসংযোগে ভিন্ন host key-এর সতর্কবার্তা | হোস্ট কী পুনরায় তৈরি হয়েছে (AMI ক্লোন করার পর প্রত্যাশিত)। | এটি স্বাভাবিক: ক্লায়েন্টে নতুন পরিচয়টি গ্রহণ করো এবং তোমার known_hosts হালনাগাদ করো। |
keys add NOTFOUND ফেরত দেয় (কোড 4) | --user-এ উল্লিখিত ব্যবহারকারী সিস্টেমে নেই। | ব্যবহারকারীর নাম যাচাই করো অথবা ডিফল্ট পরিচালিত ব্যবহারকারী (ubuntu) ব্যবহার করো। |
| আর পাসওয়ার্ড দিয়ে ঢুকতে পারছি না | হার্ডেনিংয়ের কারণে password_authentication "no"-তে আছে। | এটি ইচ্ছাকৃত: পাবলিক কী দিয়ে ঢোকো এবং imaxe ssh keys দিয়ে সেগুলো পরিচালনা করো। |
SSH মডিউল নিয়ে আটকে গেছেন?
«imaxe <module> status --json» এর আউটপুট সহ আমাদের লিখুন, আমরা দ্রুত উত্তর দেব।