SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor

উইন্ডোজ থেকে VPS-এ SSH কানেক্ট করবেন যেভাবে

উইন্ডোজ ১০ বা ১১ থেকে PowerShell-এ বিল্ট ইন OpenSSH দিয়ে VPS-এ লগইন, কী পেয়ার তৈরি, icacls দিয়ে পারমিশন ঠিক করা, ssh-agent সার্ভিস আর হোস্ট এন্ট্রি।

উইন্ডোজ থেকে VPS-এ SSH: ক্লায়েন্ট আগে থেকেই আছে

উইন্ডোজ থেকে VPS-এ SSH দিয়ে লগইন করতে আজ আর বাইরের কোনো সফটওয়্যার নামানোর দরকার নেই। উইন্ডোজ ১০ (বিল্ড 1809 বা তার পরের) আর উইন্ডোজ ১১-তে মাইক্রোসফট নিজেই OpenSSH ক্লায়েন্ট দিয়ে রাখে, এবং সেটি ডিফল্টভাবেই চালু থাকে। PowerShell বা Windows Terminal খুলে ssh root@<আপনার আইপি> লিখলেই প্রথম কানেকশন হয়ে যায়।

বাংলায় লেখা পুরনো টিউটোরিয়ালগুলো এখনও প্রথম ধাপেই PuTTY নামাতে বলে। PuTTY খারাপ কিছু নয়, কিন্তু নতুন করে শুরু করলে ওটা একটা বাড়তি ধাপ, কারণ যে কাজটা করার জন্য ওটা নামানো হচ্ছে সেই কাজের প্রোগ্রাম আপনার মেশিনে ইতিমধ্যেই বসে আছে। যাদের হাতে আগের কাজ থেকে একটা .ppk কী ফাইল আছে, তাদের জন্য PuTTY-র পথ এই লেখার শেষের দিকে আলাদা করে দেওয়া আছে।

আপনার হাতে এখন সম্ভবত দুইটি জিনিস আছে: প্রোভাইডারের ইমেইলে আসা একটি আইপি অ্যাড্রেস, আর একটি রুট পাসওয়ার্ড। এই দুইটি দিয়ে কী হয় আর প্রোটোকলটা ভেতরে কী করে, সেটা বুঝতে SSH আসলে কী এবং এটি কীভাবে কাজ করে দেখে নিতে পারেন। আর লগইন করার পর সার্ভারে প্রথমেই যে কাজগুলো সারা দরকার, তার তালিকা আছে নতুন VPS-এর প্রথম দশ মিনিটের চেকলিস্টে।

এই লেখায় উদাহরণ হিসেবে আইপি 203.0.113.10 ব্যবহার করা হয়েছে। এটি ডকুমেন্টেশনের জন্য সংরক্ষিত একটি ঠিকানা, তাই প্রতিটি কমান্ডে ওই জায়গায় আপনার নিজের আইপি বসাবেন।

প্রথম লগইন: এক লাইনেই শেষ

স্টার্ট মেনুতে PowerShell বা Windows Terminal খুঁজে খুলুন। অ্যাডমিন হিসেবে খোলার দরকার নেই, সাধারণ উইন্ডোই যথেষ্ট।

ssh -V
ssh root@203.0.113.10

প্রথম লাইনটি ক্লায়েন্টের ভার্সন ছাপে। একটি ভার্সন নম্বর দেখা গেলেই বোঝা যায় ক্লায়েন্ট আছে এবং PATH-এ আছে, তাই আর কিছু ইনস্টল করতে হবে না। দ্বিতীয় লাইনটি আসল কানেকশন। পোর্ট না লিখলে ssh ২২ ধরে নেয়; প্রোভাইডার অন্য পোর্ট দিলে ssh -p 2222 root@203.0.113.10 এর মতো করে লিখবেন।

পাসওয়ার্ড চাওয়ার পর একটা জিনিস প্রথমবার সবাইকেই বিভ্রান্ত করে: টাইপ করা অক্ষর স্ক্রিনে কিছুই দেখায় না, তারা চিহ্নও দেখায় না। এটা ভাঙা কিছু নয়, ssh ইচ্ছে করেই পাসওয়ার্ড ইকো করে না। তাই কিবোর্ড কাজ করছে না ভেবে বারবার মুছবেন না। ইমেইল থেকে পাসওয়ার্ড কপি করলে ডান ক্লিক বা Ctrl+V দিয়ে পেস্ট করে সোজা Enter দিন।

লগইন সফল হলে প্রম্পট বদলে গিয়ে সার্ভারের হোস্টনেম দেখাবে। মিলিয়ে দেখার সহজ উপায় হলো whoami চালানো, যা root ছাপবে, আর ip a, যা সার্ভারের ইন্টারফেস আর ঠিকানা দেখাবে। বেরিয়ে আসতে exit।

ssh কমান্ড চিনতে না পারলে

পুরনো বা কাটাছেঁড়া করা উইন্ডোজ ইমেজে অপশনাল ফিচারটি বন্ধ থাকতে পারে। তখন PowerShell বলে কমান্ডটি চেনা যাচ্ছে না। অ্যাডমিন হিসেবে PowerShell খুলে দেখে নিন আর দরকার হলে যোগ করে নিন।

Get-WindowsCapability -Online -Name OpenSSH.Client*
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

প্রথম কমান্ডের আউটপুটে State লেখা আছে, সেটি Installed না হলে দ্বিতীয় কমান্ডটি চালান। যোগ করার পর টার্মিনালটি বন্ধ করে নতুন করে খুলুন, কারণ চালু থাকা উইন্ডো তার PATH একবারই পড়ে, তাই নতুন ফাইল যোগ হলেও পুরনো উইন্ডো সেটি খুঁজে পায় না।

প্রথমবার ফিঙ্গারপ্রিন্ট প্রম্পট কী জিজ্ঞেস করছে

প্রথম কানেকশনে ssh সার্ভারের হোস্ট কী-র একটি ফিঙ্গারপ্রিন্ট দেখিয়ে জিজ্ঞেস করে আপনি চালিয়ে যেতে চান কি না। প্রশ্নটা অর্থহীন নয়। এই সার্ভারের কী ssh আগে কখনও দেখেনি, তাই সে নিজে থেকে বলতে পারে না ওপাশে আপনার সার্ভার বসে আছে, নাকি মাঝখানে কেউ বসে ট্রাফিক পড়ছে। yes লিখলে কী-টি %USERPROFILE%\.ssh\known_hosts ফাইলে জমা হয়।

এরপর থেকে প্রতিবার ssh ওই একই কী আশা করে। কী বদলে গেলে সে জোর গলায় সতর্ক করে এবং কানেকশন আটকে দেয়। ভালো অভ্যাসটি হলো প্রথমবারেই প্রোভাইডারের কনসোল বা ইমেইলে দেওয়া ফিঙ্গারপ্রিন্টের সাথে মিলিয়ে নেওয়া। একবার অভ্যাস না করলে মানুষ সারাজীবন প্রম্পট দেখলেই yes টাইপ করে যায়, আর তখন সতর্কবার্তাটির কোনো মূল্য থাকে না।

আপনি নিজে VPS রিইনস্টল বা রিবিল্ড করলে সার্ভারের কী বৈধভাবেই বদলে যায়। তখন পুরনো এন্ট্রিটি সরিয়ে নিতে হয়।

ssh-keygen -R 203.0.113.10

কিন্তু আপনি কিছু না বদলানো সত্ত্বেও কী বদলের সতর্কবার্তা এলে সেটি হালকাভাবে নেবেন না। আগে প্রোভাইডারের প্যানেল থেকে নিশ্চিত হয়ে নিন সার্ভারটি আসলেই নতুন করে বসানো হয়েছে কি না।

উইন্ডোজে SSH কী পেয়ার তৈরি করা

পাসওয়ার্ড দিয়ে লগইন চলে, কিন্তু পাসওয়ার্ড অনুমান করা যায় এবং টাইপ করার সময় চুরি করা যায়। তার চেয়ে ভালো পথ হলো কী পেয়ার: দুইটি ফাইল, একটি গোপন প্রাইভেট কী যা আপনার ল্যাপটপেই থাকে, আর একটি পাবলিক কী যা সার্ভারে রাখা যায়। ssh-keygen প্রোগ্রামটিও উইন্ডোজের সাথেই আসে।

ssh-keygen -t ed25519 -C "windows-laptop"

ফাইলের নাম জিজ্ঞেস করলে Enter চাপুন, তাতে কী দুইটি C:\Users\<আপনার নাম>\.ssh\ ফোল্ডারে id_ed25519 আর id_ed25519.pub নামে জমা হয়। এরপর পাসফ্রেজ চাইবে। পাসফ্রেজ দিন। কারণটা সরল: পাসফ্রেজ ছাড়া প্রাইভেট কী ফাইলটি নিজেই একটা পাসওয়ার্ড, ফাইলটি যে কপি করতে পারবে সে-ই আপনার সার্ভারে ঢুকতে পারবে। বারবার টাইপ করার ঝামেলা ssh-agent দিয়ে মিটবে, সেটা নিচে আছে।

-t ed25519 আজকের পছন্দ, কারণ এই কী ছোট, দ্রুত, আর চালু থাকা প্রতিটি OpenSSH সংস্করণ এটি বোঝে। খুব পুরনো কোনো সার্ভারে কাজ করতে হলে -t rsa -b 4096 ব্যবহার করবেন। -C অংশটি কেবল একটি লেবেল, তাই ওখানে মেশিনের নাম লিখে রাখলে ছয় মাস পর সার্ভারে বসে বোঝা যায় কোন কী কোন কম্পিউটারের। একাধিক কী-র নামকরণ, ব্যাকআপ আর বাতিল করার নিয়ম নিয়ে বিস্তারিত আছে SSH কী ম্যানেজমেন্টের মূল নিয়মগুলোতে।

ফোল্ডারটি দেখতে চাইলে explorer $env:USERPROFILE\.ssh চালান। এখানে একটি নিয়ম মুখস্থ রাখুন: এক্সটেনশন ছাড়া ফাইলটি (id_ed25519) কখনও কাউকে পাঠাবেন না, কোনো চ্যাটে বা ইমেইলে দেবেন না। শেয়ার করার জিনিস কেবল .pub ফাইলটি, যার ভেতরের লেখাটি প্রকাশ্য হলেও কোনো ক্ষতি নেই।

পাবলিক কী সার্ভারে তোলার দুই উপায়

লিনাক্সে যে ssh-copy-id কমান্ডটি এই কাজ করে, উইন্ডোজে সেটি নেই। তাই দুইটি উপায় আছে। প্রথমটি এক লাইনেই সব করে, আর পাসওয়ার্ড লগইন এখনও কাজ করছে বলেই এটি চলে।

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

লাইনটি ভেঙে দেখলে বোঝা সহজ। Get-Content পাবলিক কী ফাইলটি পড়ে, পাইপ সেটি ssh-এর ভেতর দিয়ে সার্ভারে পাঠায়, সার্ভারে mkdir -p দরকার হলে .ssh ফোল্ডার বানায়, আর cat >> কী-টি authorized_keys ফাইলের শেষে যোগ করে। >> ব্যবহার করা হয়েছে বলে আগের কোনো কী মুছে যায় না। chmod দুইটি জরুরি, কারণ ফোল্ডার বা ফাইলের পারমিশন বেশি খোলা থাকলে সার্ভারের sshd ওই কী পড়তেই রাজি হয় না।

দ্বিতীয় উপায় হাতে করা, আর অনেকের কাছে এটি বেশি স্পষ্ট লাগে। কী-টি ক্লিপবোর্ডে নিন, তারপর সার্ভারে লগইন করে এডিটরে পেস্ট করুন।

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | clip

সার্ভারে nano ~/.ssh/authorized_keys খুলে ফাইলের শেষে নতুন লাইনে পেস্ট করুন, Ctrl+O দিয়ে সেভ, Ctrl+X দিয়ে বেরোন। এখানে সবচেয়ে বেশি ভুল হয় একটি জায়গায়: পুরো কী-টি অবশ্যই একটি লাইনে থাকতে হবে। পেস্ট করার সময় মাঝখানে একটা এন্টার পড়ে গেলে sshd ওটাকে দুইটি ভাঙা লাইন হিসেবে দেখে এবং কী-টি কাজ করে না, অথচ কোনো ফাইল হারায়নি বলে দেখে বোঝাও যায় না। সেভ করার আগে এডিটরে চোখ বুলিয়ে দেখে নিন লেখাটি ssh-ed25519 দিয়ে শুরু হয়ে এক টানে শেষ হয়েছে।

VPS তৈরির সময় প্রোভাইডারের প্যানেলে SSH key বসানোর ঘর থাকলে সেখানেই .pub ফাইলের লেখাটি দিয়ে দেওয়া সবচেয়ে পরিষ্কার পথ, তাতে প্রথম লগইনই কী দিয়ে হয়।

কী লগইন পরীক্ষা করুন, পাসওয়ার্ড পথ খোলা রেখে

এই ধাপটি বাদ দিলেই মানুষ নিজের সার্ভার থেকে নিজে তালাবন্দি হয়। চলতি সেশনটি খোলা রাখুন, নতুন একটি PowerShell উইন্ডো খুলুন, আর সেখান থেকে কী দিয়ে ঢুকে দেখুন।

ssh -i $env:USERPROFILE\.ssh\id_ed25519 root@203.0.113.10

এবার যদি পাসফ্রেজ চায়, তার মানে কী-টি ব্যবহার হচ্ছে, কারণ পাসফ্রেজ আপনার লোকাল ফাইলের তালা, সার্ভারের পাসওয়ার্ড নয়। দুইটির তফাত বোঝার সহজ উপায় হলো প্রম্পটের লেখাটি পড়া: সার্ভারের পাসওয়ার্ড প্রম্পটে ইউজার আর হোস্টের নাম থাকে, পাসফ্রেজ প্রম্পটে কী ফাইলের পথ থাকে। এরপর -i ছাড়া সাধারণভাবে ssh root@203.0.113.10 চালিয়ে দেখুন, ডিফল্ট নামের কী ssh নিজেই খুঁজে নেয়।

কী দিয়ে ঢোকা কাজ করলেও সার্ভার যদি আবার অ্যাকাউন্টের পাসওয়ার্ড চায়, তার মানে কী-টি গ্রহণ করা হয়নি। তখন ssh -v root@203.0.113.10 চালান আর আউটপুটে দুইটি জিনিস মিলিয়ে দেখুন: ssh কোন কোন কী ফাইল দেখাচ্ছে, আর সার্ভার কোন কোন পদ্ধতি গ্রহণ করছে। আপনার ফাইলের নামটি ওই তালিকায় না থাকলে সমস্যাটি ক্লায়েন্টের দিকে, আর থাকলে সমস্যাটি সার্ভারের authorized_keys বা পারমিশনে। ধাপে ধাপে খুঁজে বের করার পদ্ধতি আছে কী লগইন বাতিল হওয়ার আসল কারণ বের করার গাইডে, আর প্রথমবার এই দেয়ালে ধাক্কা খাওয়া প্রায় নিয়মের মতো, তাই হতাশ হওয়ার কিছু নেই।

নতুন উইন্ডো থেকে কী লগইন নিশ্চিতভাবে কাজ করার আগে পাসওয়ার্ড লগইন বন্ধ করবেন না। কাজ করার পর সার্ভারের দিকটা শক্ত করার ধাপগুলো আছে VPS-এ SSH হার্ডেনিং করার গাইডে, তাই এখানে সেগুলো আবার শেখানো হচ্ছে না।

প্রাইভেট কী পারমিশন: icacls দিয়ে ঠিক করা

এটা উইন্ডোজের নিজস্ব ঝামেলা, লিনাক্স টিউটোরিয়ালে যার কোনো উল্লেখ থাকে না। অন্য মেশিন থেকে কপি করা, পেনড্রাইভ থেকে আনা বা Downloads ফোল্ডারে নামানো কী ফাইলের উপর সাধারণত একাধিক অ্যাকাউন্টের পড়ার অধিকার বসে যায়, কারণ ফাইলটি প্যারেন্ট ফোল্ডার থেকে পারমিশন উত্তরাধিকার সূত্রে পায়। ssh এমন কী ব্যবহার করতে রাজি হয় না, সে অভিযোগ করে ফাইলটি অন্যদের জন্যও পড়ার মতো খোলা, তারপর কী-টি বাদ দিয়ে পাসওয়ার্ড চাইতে শুরু করে। উপসর্গটি তাই বিভ্রান্তিকর, কারণ পাসওয়ার্ড প্রম্পট দেখে মনে হয় সার্ভার কী চেনেনি।

icacls "$env:USERPROFILE\.ssh\id_ed25519" /inheritance:r /grant:r "$($env:USERNAME):(R)"
icacls "$env:USERPROFILE\.ssh\id_ed25519"

প্রথম লাইনের /inheritance:r প্যারেন্ট ফোল্ডার থেকে পাওয়া সব এন্ট্রি সরিয়ে দেয়, আর /grant:r আগের অনুমতিগুলো বদলে কেবল আপনার ইউজারকে পড়ার অধিকার দেয়। দ্বিতীয় লাইনটি ফলাফল দেখায়। তালিকায় কেবল আপনার নিজের অ্যাকাউন্টের নাম থাকা উচিত। এখনও Users বা Authenticated Users জাতীয় গ্রুপ দেখতে পেলে সাধারণত দুইটির একটি ঘটেছে: পথটি ভুল লিখেছেন, অথবা ফাইলটি আপনার প্রোফাইলের বাইরে অন্য কোনো ড্রাইভে বসে আছে।

ভালো খবর হলো, ssh-keygen দিয়ে সরাসরি .ssh ফোল্ডারে তৈরি করা কী-তে এই সমস্যা সাধারণত হয় না। তাই কী কপি করে আনার বদলে যে মেশিন থেকে লগইন করবেন সেখানেই নতুন কী বানানো সহজ এবং নিরাপদ।

ssh-agent উইন্ডোজ সার্ভিস হিসেবে চালানো

প্রতিবার পাসফ্রেজ টাইপ করা বিরক্তিকর, আর বিরক্তি থেকেই মানুষ পাসফ্রেজ তুলে দেয়। ssh-agent এই সমস্যার উত্তর: সে একবার কী খুলে সেটি মেমোরিতে ধরে রাখে, তারপর প্রতিটি কানেকশনে নিজেই সেটি ব্যবহার করে। উইন্ডোজে এজেন্টটি একটি বিল্ট ইন সার্ভিস, যা ডিফল্টভাবে বন্ধ থাকে। প্রথম দুই লাইনের জন্য অ্যাডমিন PowerShell লাগবে।

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
ssh-add -l

ssh-add একবার পাসফ্রেজ চাইবে, আর ssh-add -l চালিয়ে যোগ করা কী-র তালিকা দেখতে পাবেন। এরপর ssh root@203.0.113.10 আর কোনো কিছু না চেয়েই ঢুকে যাবে। উইন্ডোজের এজেন্ট যোগ করা কী রিবুটের পরেও মনে রাখে, যা আরাম, তবে সাথে একটি ফলাফলও আসে: আপনার আনলক করা উইন্ডোজ সেশনে যার হাত পড়বে, সে পাসফ্রেজ ছাড়াই আপনার সার্ভারে ঢুকতে পারবে। তাই মেশিন ছেড়ে উঠলে স্ক্রিন লক করা এখন আর কেবল ভদ্রতা নয়। কোনো কী সরাতে চাইলে ssh-add -d <কী ফাইলের পথ>, আর সব সরাতে ssh-add -D।

আইপি বারবার টাইপ না করতে SSH config

আইপি, ইউজার আর পোর্ট প্রতিবার হাতে লেখার কোনো দরকার নেই। %USERPROFILE%\.ssh\config ফাইলে একটি হোস্ট এন্ট্রি লিখে রাখলে ছোট একটি নাম দিয়েই লগইন হয়।

notepad $env:USERPROFILE\.ssh\config

ফাইল না থাকলে Notepad তৈরি করতে চাইবে, রাজি হয়ে যান। সেভ করার সময় উইন্ডোজের একটি ফাঁদ আছে: Notepad ডিফল্টভাবে .txt জুড়ে দেয়, আর config.txt নামের ফাইল ssh কখনও পড়ে না। তাই Save as dialog-এ File type হিসেবে All files বেছে নিয়ে নাম দিন config, কোনো এক্সটেনশন ছাড়া। ভেতরে লিখুন:

Host myvps
    HostName 203.0.113.10
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

এখন ssh myvps লিখলেই কানেকশন হবে, আর ফাইল পাঠাতে scp report.txt myvps:/root/ কাজ করবে, কারণ scp একই config পড়ে। উইন্ডোজের ssh এখানে ~ চিহ্নটি আপনার প্রোফাইল ফোল্ডার হিসেবেই বোঝে, তাই পুরো C:\Users\... পথ লেখার দরকার নেই।

IdentitiesOnly yes লাইনটি ছোট কিন্তু কাজের। এটি না থাকলে এজেন্টে থাকা সব কী ssh এক এক করে সার্ভারকে দেখাতে শুরু করে। কী-র সংখ্যা বেড়ে গেলে সার্ভার চেষ্টার সীমা পেরিয়ে কানেকশন কেটে দেয়, আর তখন উপসর্গ দেখে মনে হয় সঠিক কী-টিও কাজ করছে না। সেই অবস্থার ব্যাখ্যা আর সমাধান আছে অনেকগুলো কী একসাথে পাঠানোর ফলে লগইন কেটে যাওয়া নিয়ে লেখাটিতে।

যাদের হাতে PuTTY আর .ppk ফাইল আছে

PuTTY নিজের আলাদা ফরম্যাটে কী রাখে, আর OpenSSH সেই .ppk ফাইল পড়তে পারে না। দুইটি পথ আছে। এক, PuTTY আর তার এজেন্ট Pageant দিয়েই কাজ চালিয়ে যাওয়া। PuTTY-তে Host Name ঘরে আইপি, Port ঘরে ২২, আর Connection বিভাগের SSH অংশে Auth এর নিচে Credentials-এ .ppk ফাইলটি দেখিয়ে দিলেই হয়। প্রথম কানেকশনে PuTTY যে ফিঙ্গারপ্রিন্ট ডায়ালগ দেখায়, সেটি ঠিক উপরের সেই একই প্রশ্ন, তাই একইভাবে মিলিয়ে নিন।

দুই, কী-টি OpenSSH ফরম্যাটে রূপান্তর করা। PuTTYgen খুলে Load দিয়ে .ppk ফাইলটি নিন, তারপর মেনুর Conversions থেকে Export OpenSSH key বেছে %USERPROFILE%\.ssh ফোল্ডারে সেভ করুন। এরপর উপরের icacls ধাপটি ওই নতুন ফাইলের উপর চালাতে ভুলবেন না, কারণ নতুন করে সেভ করা ফাইলে পারমিশন আবার বেশি খোলা হয়ে থাকতে পারে। একটি প্রাইভেট কী-র দুই কপি দুই ফরম্যাটে বহুদিন রেখে দেওয়া বুদ্ধিমানের কাজ নয়, কারণ কী বাতিল করার দিন আপনাকে দুই জায়গার কথাই মনে রাখতে হবে।

শেয়ার্ড কম্পিউটারে তৈরি কী আর ব্যবহার করবেন না

সাইবার ক্যাফে, ভাগ করা অফিস পিসি বা অন্য কারও ল্যাপটপে তৈরি করা প্রাইভেট কী-কে সোজা কথায় ফাঁস হয়ে যাওয়া কী হিসেবে ধরে নিন। আপনি জানেন না ওই প্রোফাইল কোথায় ব্যাকআপ হয়, অন্য কোনো অ্যাকাউন্ট আপনার ফোল্ডার পড়তে পারে কি না, বা মেশিনটি রাতে কোনো ইমেজে ফিরে যায় কি না। ওই কী নিজের ল্যাপটপে বহন করে আনবেন না।

করার কাজটি সোজা। নিজের মেশিনে নতুন একটি কী পেয়ার বানান, তার পাবলিক কী সার্ভারে যোগ করুন, নতুন কী দিয়ে লগইন পরীক্ষা করুন, তারপর সার্ভারের ~/.ssh/authorized_keys ফাইল থেকে পুরনো কী-র লাইনটি মুছে দিন। ল্যাপটপ হারিয়ে গেলে বা বিক্রি করে দিলেও ঠিক একই কাজ, আর সেই কারণেই -C লেবেলে মেশিনের নাম লিখে রাখা আগে থেকেই লাভের।

কোথায় আটকাবেন, আর কী মিলিয়ে দেখবেন

কানেকশন অনেকক্ষণ ঝুলে থেকে সময় শেষ হয়ে যায়। এর মানে ওই ঠিকানার ২২ পোর্টে কিছুই উত্তর দিচ্ছে না। প্যানেল থেকে আইপি আরেকবার মিলিয়ে নিন, সার্ভারটি সত্যিই চালু আছে কি না দেখুন, আর প্রোভাইডারের নেটওয়ার্ক ফায়ারওয়ালে ২২ পোর্ট খোলা আছে কি না দেখুন, কারণ ওটি সার্ভারের ভেতরের ফায়ারওয়াল থেকে আলাদা জিনিস। উইন্ডোজ থেকে পথটুকু পরীক্ষা করতে Test-NetConnection 203.0.113.10 -Port 22 চালান। অনেক অফিস ও কিছু আইএসপি নেটওয়ার্ক বাইরের ২২ পোর্ট আটকে রাখে, তাই মোবাইল হটস্পট থেকে একবার চেষ্টা করে দেখলে দোষ কোথায় তা দ্রুত বোঝা যায়।

কানেকশন সাথে সাথেই নাকচ হয়ে যায়। দেরি না হয়ে তৎক্ষণাৎ ফিরে আসা মানে হোস্টটি পাওয়া গেছে, কিন্তু ওই পোর্টে কোনো সার্ভিস শুনছে না। সাধারণত প্রোভাইডার অন্য পোর্ট ব্যবহার করে, তাই ইমেইলে পোর্ট নম্বর খুঁজুন আর -p দিয়ে চেষ্টা করুন।

পাসওয়ার্ড বারবার নেওয়া হচ্ছে না। ইমেইল থেকে কপি করার সময় শেষে একটি ফাঁকা জায়গা বা লাইন ব্রেক চলে আসা খুব সাধারণ ঘটনা। পাসওয়ার্ডটি আগে একটি খালি টেক্সট ফাইলে পেস্ট করে দেখে নিন, তারপর সেখান থেকে কপি করুন। তাতেও না হলে প্যানেল থেকে পাসওয়ার্ড নতুন করে সেট করে নিন, পদ্ধতি আছে প্যানেল থেকে VPS-এর রুট পাসওয়ার্ড বদলানোর গাইডে।

কী দিয়ে ঢোকার বদলে পাসওয়ার্ড চাইছে। সম্ভাব্য কারণ চারটি, এবং প্রতিটিই নিজে মিলিয়ে দেখা যায়: প্রাইভেট কী ফাইলের পারমিশন বেশি খোলা, পাবলিক কী ভুল ইউজারের authorized_keys ফাইলে বসেছে (root বনাম আপনার নিজের ইউজার), পেস্ট করার সময় কী দুই লাইনে ভেঙে গেছে, অথবা ssh অন্য নামের কী ফাইল খুঁজছে। ssh -v এর আউটপুট আর সার্ভারের ~/.ssh/authorized_keys ফাইলের শেষ লাইনটি পাশাপাশি রেখে দেখলে কোনটি ঘটেছে তা প্রায় সবসময়ই ধরা পড়ে।

হোস্ট কী বদলে গেছে বলে সতর্কবার্তা। আপনি সার্ভার রিবিল্ড করলে ssh-keygen -R দিয়ে পুরনো এন্ট্রি সরান। না করে থাকলে আগে কারণ খুঁজুন, তারপর কানেক্ট করুন।

এতদূর এলে আপনার হাতে তিনটি জিনিস আছে: কাজ করা কী লগইন, পাসফ্রেজ একবার চাওয়া একটি এজেন্ট, আর একটি ছোট নাম দিয়ে সার্ভারে ঢোকার অভ্যাস। এবার সার্ভারের দিকটি শক্ত করার পালা, আর সেটি পাসওয়ার্ড লগইন বন্ধ করা থেকেই শুরু।

FAQ

উইন্ডোজ থেকে VPS-এ SSH করতে PuTTY লাগবে কি?

লাগবে না। উইন্ডোজ ১০ (বিল্ড 1809 বা তার পরের) আর উইন্ডোজ ১১ মাইক্রোসফটের OpenSSH ক্লায়েন্ট নিয়েই আসে, তাই PowerShell বা Windows Terminal খুলে ssh root@<আইপি> লিখলেই কাজ হয়। যাচাই করতে ssh -V চালান, একটি ভার্সন নম্বর ছাপা হলেই ক্লায়েন্ট আছে। আপনার হাতে আগে থেকেই .ppk কী থাকলে PuTTY রাখা যায়, নতুবা নতুন করে ওটি নামানোর কারণ নেই।

উইন্ডোজে SSH কী ফাইল কোথায় থাকে?

%USERPROFILE%\.ssh ফোল্ডারে, অর্থাৎ C:\Users\<আপনার নাম>\.ssh। ভেতরে id_ed25519 হলো প্রাইভেট কী যা কাউকে দেওয়ার নয়, id_ed25519.pub হলো পাবলিক কী যা সার্ভারে রাখা হয়, known_hosts ফাইলে সার্ভারের হোস্ট কী জমা থাকে, আর config ফাইলে হোস্ট এন্ট্রি লেখা হয়। ফোল্ডারটি খুলতে explorer $env:USERPROFILE\.ssh চালাতে পারেন।

প্রতিবার পাসফ্রেজ টাইপ করা এড়াব কীভাবে?

উইন্ডোজের বিল্ট ইন ssh-agent সার্ভিসটি চালু করে কী-টি একবার যোগ করে দিন: অ্যাডমিন PowerShell-এ Set-Service ssh-agent -StartupType Automatic আর Start-Service ssh-agent, তারপর ssh-add $env:USERPROFILE\.ssh\id_ed25519। এজেন্ট রিবুটের পরেও কী মনে রাখে, তাই পাসফ্রেজ আর চাইবে না। এর ফল হলো আপনার আনলক করা উইন্ডোজ সেশন থেকেই সার্ভারে ঢোকা যায়, তাই স্ক্রিন লক করার অভ্যাস জরুরি।

কী দিয়ে লগইন না হয়ে পাসওয়ার্ড চাইলে প্রথমে কী দেখব?

প্রথমে প্রাইভেট কী ফাইলের পারমিশন, কারণ কপি করে আনা কী-তে এটিই সবচেয়ে বেশি হয়; icacls দিয়ে দেখে নিন তালিকায় কেবল আপনার অ্যাকাউন্ট আছে কি না। এরপর সার্ভারে ~/.ssh/authorized_keys ফাইলটি খুলে দেখুন কী-টি এক লাইনে আছে কি না এবং সেটি ঠিক যে ইউজার দিয়ে লগইন করছেন তারই হোম ফোল্ডারে আছে কি না। শেষে ssh -v চালিয়ে মিলিয়ে দেখুন ssh কোন কী ফাইলটি আসলে পাঠাচ্ছে।