এই আর্টিকেলে আমরা উইন্ডোজে RSA কী ব্যবহার করে SSH প্রমাণীকরণ কনফিগার করব যাতে রিমোট সার্ভার/কম্পিউটারে নিরাপদে এক্সেস করা যায়। আমরা দেখব কিভাবে উইন্ডোজে RSA কী (সার্টিফিকেট) জেনারেট করতে হয় এবং উইন্ডোজ ১০/উইন্ডোজ সার্ভার ২০১৯-এ বিল্ট-ইন OpenSSH সার্ভার কী-ভিত্তিক প্রমাণীকরণের জন্য কনফিগার করতে হয় (যা রিমোট হোস্টে পাসওয়ার্ড ছাড়াই প্রমাণীকরণের সুযোগ দেয়)।
SSH কী-ভিত্তিক প্রমাণীকরণ লিনাক্স জগতে ব্যাপকভাবে ব্যবহৃত হয়, কিন্তু উইন্ডোজে এটি সম্প্রতি এসেছে। ধারণা হল ক্লায়েন্টের পাবলিক কী SSH সার্ভারে যোগ করা হয়, এবং যখন ক্লায়েন্ট সংযোগ করার চেষ্টা করে, সার্ভার চেক করে ক্লায়েন্টের কাছে সংশ্লিষ্ট প্রাইভেট কী আছে কিনা।
সামগ্রী:
- উইন্ডোজে SSH (RSA) কী জেনারেট করা
- OpenSSH সার্ভার উইন্ডোজে SSH কী ব্যবহার করে প্রমাণীকরণের জন্য কনফিগার করা
- লোকাল অ্যাডমিন হিসেবে SSH কী ব্যবহার করে উইন্ডোজে লগইন করা
উইন্ডোজে SSH (RSA) কী জেনারেট করা
আপনাকে যে ক্লায়েন্ট কম্পিউটার থেকে রিমোট উইন্ডোজ সার্ভার (যেটে OpenSSH চলছে) এ সংযোগ করবেন, সেখানে দুটি RSA কী (পাবলিক এবং প্রাইভেট) জেনারেট করতে হবে। প্রাইভেট কী ক্লায়েন্ট সাইডে থাকে (এটি কারো সাথে শেয়ার করবেন না!), এবং পাবলিক কী SSH সার্ভারের authorized_keys ফাইলে যোগ করা হয়। উইন্ডোজ ক্লায়েন্টে RSA কী জেনারেট করতে OpenSSH ক্লায়েন্ট ইনস্টল থাকতে হবে।
উইন্ডোজ ১০ ১৮০৯ (এবং nieuwere) এবং উইন্ডোজ সার্ভার ২০১৯-এ OpenSSH ক্লায়েন্ট আলাদা ফিচার হিসেবে ইনস্টলড থাকে:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
পূর্বের উইন্ডোজ ভার্সনে GitHub থেকে Win32-OpenSSH পোর্ট ইনস্টল করুন (উইন্ডোজে SFTP (SSH FTP) সার্ভার সেটআপ আর্টিকেলে উদাহরণ দেখুন)।
স্ট্যান্ডার্ড (নন-প্রিভিলেজড) পাওয়ারশেল সেশন চালু করুন এবং RSA 2048 কী জোড়া জেনারেট করতে কমান্ড দিন:
ssh-keygen
আপনাকে প্রাইভেট কী প্রোটেক্ট করার জন্য পাসওয়ার্ড দিতে বলা হবে। আপনি পাসওয়ার্ড দিলে SSH প্রমাণীকরণের জন্য এই কী ব্যবহার করার সময় প্রতিবার সেটি দিতে হবে। আমি কোনো পাসফ्रेज দিনি (সুপারিশ করা হয় না)।

Ssh-keygen করেন্ট উইন্ডোজ ইউজারের প্রোফাইলে (C:\Users\your_username) .ssh ডিরেক্টরি তৈরি করবে এবং সেখানে ২টি ফাইল রাখবে:
- id_rsa – একটি প্রাইভেট কী
- id_rsa.pub – একটি পাবলিক কী
RSA কী তৈরি করার পর, আপনি প্রাইভেট কী SSH Agent সার্ভিসে যোগ করতে পারেন, যা প্রাইভেট কী সুবিধাজনকভাবে ম্যানেজ করতে এবং প্রমাণীকরণের জন্য ব্যবহার করতে দেয়। SSH Agent প্রাইভেট কী সংরক্ষণ করে এবং করেন্ট ইউজারের সিকিউরিটি কনটেক্সটে সেগুলো প্রদান করে। পাওয়ারশেল সার্ভিস ম্যানেজমেন্ট কমান্ড ব্যবহার করে ssh-agent সার্ভিস চালু করুন এবং অটোমেটিক স্টার্টআপ কনফিগার করুন:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
আপনার প্রাইভেট কী ssh-agent ডেটাবেসে যোগ করুন:
ssh-add "C:\Users\youruser\.ssh\id_rsa"
অথবা এইভাবে:
ssh-add.exe $ENV:UserProfile\.ssh\id_rsa
OpenSSH সার্ভার উইন্ডোজে SSH কী ব্যবহার করে প্রমাণীকরণের জন্য কনফিগার করা
তারপর ক্লায়েন্টে জেনারেট করা পাবলিক কী আপনার SSH সার্ভারে কপি করুন (এই উদাহরণে এটি একটি রিমোট কম্পিউটার যা উইন্ডোজ ১০ ১৯০৩ চলছে এবং OpenSSH কনফিগার করা আছে)।
আমরা ইতিমধ্যে উইন্ডোজে OpenSSH সার্ভার কনফিগার করার বিস্তারিত আলোচনা করেছি।
আপনি যে ইউজার ব্যবহার করে SSH সার্ভারে সংযোগ করবেন, তার প্রোফাইলের .ssh ডিরেক্টরিতে id_rsa.pub ফাইল কপি করুন। উদাহরণস্বরূপ, আমার উইন্ডোজ ১০-এ admin ইউজার আছে, তাই আমাকে কীটি C:\Users\admin\.ssh\authorized_keys-এ কপি করতে হবে।
SCP ব্যবহার করে পাবলিক কী SSH সার্ভারে কপি করতে পারেন:
scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keys
এখন আপনি পাসওয়ার্ড ছাড়াই আপনার উইন্ডোজ SSH সার্ভারে সংযোগ করতে পারবেন। আপনি যদি প্রাইভেট কীর জন্য পাসওয়ার্ড (পাসফ्रेज) সেট না করে থাকেন, আপনি স্বয়ংক্রিয়ভাবে আপনার রিমোট উইন্ডোজ হোস্টে সংযোগ করবেন।
নেটিভ SSH ক্লায়েন্ট ব্যবহার করে রিমোট হোস্টে সংযোগের কমান্ড:
ssh (username)@(SSH server name or IP address)
উদাহরণস্বরূপ:
ssh admin@192.168.1.15
এর মানে আপনি IP অ্যাড্রেস 192.168.1.15-এ রিমোট SSH সার্ভারের সাথে admin অ্যাকাউন্টের অধীনে সংযোগ করতে চান। SSH Agent স্বয়ংক্রিয়ভাবে আগে সংরক্ষিত প্রাইভেট কী ব্যবহার করে প্রমাণীকরণ করার চেষ্টা করবে।
আপনি যদি ssh-agent সার্ভিস ব্যবহার করে SSH কী ম্যানেজ করতে না চান, SSH প্রমাণীকরণের জন্য ব্যবহার করার প্রাইভেট কী ফাইলের পাথ এইভাবে নির্দিষ্ট করতে পারেন:
ssh admin@192.168.1.15 -i "C:\Users\youruser\.ssh\id_rsa"
আপনি যদি RSA কী ব্যবহার করে আপনার SSH সার্ভারে সংযোগ করতে না পারেন এবং এখনও পাসওয়ার্ড দিতে বলা হয়, তবে সম্ভবত যে ইউজার অ্যাকাউন্টের সাথে সংযোগ করার চেষ্টা করছেন সেটি লোকাল সার্ভার অ্যাডমিনিস্ট্রেটর গ্রুপের সদস্য (গ্রুপ SID হল S-1-5-32-544)। আমরা পরে এটা আলোচনা করব।

লোকাল অ্যাডমিন হিসেবে SSH কী ব্যবহার করে উইন্ডোজে লগইন করা
OpenSSH উইন্ডোজ লোকাল অ্যাডমিনিস্ট্রেটর প্রিভিলেজ 가진 ইউজারদের জন্য 스페সিয়াল কী-ভিত্তিক অ্যাক্সেস সেটিংস ব্যবহার করে।
প্রথমে, ইউজার প্রোফাইলের authorized_keys ফাইলের বদলে C:\ProgramData\ssh\administrators_authorized_keys ফাইল ব্যবহার করতে হবে। আপনাকে আপনার SSH কী এই টেক্সট ফাইলে যোগ করতে হবে (সিকিউরিটি উদ্দেশ্যে, শুধু Administrators গ্রুপ এবং SYSTEM-এর এই ফাইল পড়ার পারমিশন থাকা উচিত)।
ইউজার প্রোফাইলের authorized_keys ফাইল ব্যবহার করতে এবং পাবলিক কী ডেটা administrators_authorized_keys ফাইলে সরাতে না চাইলে, OpenSSH কনফিগারেশন ফাইল (C:\ProgramData\ssh\sshd_config) এর সম্পর্কিত লাইনটি কমেন্ট আউট করতে পারেন।
এই লাইনগুলো কমেন্ট আউট করুন:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd_config ফাইলে RSA কী ব্যবহার করে উইন্ডোজ এক্সেস অনুমতি দিন:
PubkeyAuthentication yes
এবং SSH পাসওয়ার্ড লগইন ডিজেবল করুন:
PasswordAuthentication no
sshd_config-এ পরিবর্তন সংরক্ষণ করার পর sshd সার্ভিস রিস্টার্ট করা ভুলবেন না।
restart-service sshd
এখানে আরেকটি গুরুত্বপূর্ণ বিষয়। পুরনো OpenSSH ভার্সনে authorized_keys ফাইলে NT Service\sshd-এর রিড পারমিশন দিতে হতো।
এটি করতে আপনাকে নিচের কাজগুলোর একটা করতে হবে:
- OpenSSHUtils মডিউল ইনস্টল করুন:
Install-Module -Force OpenSSHUtils -Scope AllUsers। ফাইল পারমিশন পরিবর্তন করতে এই কমান্ড চালান:Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys
- NTFSSecurity মডিউল বা icacls ব্যবহার করে ফাইলের NTFS পারমিশন পরিবর্তন করুন;
- অথবা sshd_config ফাইলে StrictModes ডিজেবল করুন। ডিফল্টলি এই মোড ইনেবল থাকে এবং পাবলিক ও প্রাইভেট কী ভালোভাবে প্রোটেক্ট না থাকলে কী-ভিত্তিক প্রমাণীকরণ বাধা দেয়। লাইন
#StrictModes yesকমেন্ট আউট করুন, এবং এটিকেStrictModes noএ পরিবর্তন করুন।
এভাবে আপনি পাবলিক RSA কী (সার্টিফিকেট) ব্যবহার করে উইন্ডোজে SSH প্রমাণীকরণ কনফিগার করেছেন। এখন আপনি এই প্রমাণীকরণ পদ্ধতি ব্যবহার করে নিরাপদে রিমোট সার্ভার এক্সেস করতে, SSH টানেলে স্বয়ংক্রিয়ভাবে পোর্ট ফরওয়ার্ড করতে, স্ক্রিপ্ট রান করতে এবং অটোমেশন-সম্পর্কিত যেকোনো কাজ করতে পারবেন।