VPS-এ Password ছাড়াই SSH Login করার সম্পূর্ণ গাইড

প্রতিবার VPS-এ SSH দিয়ে ঢোকার সময় যদি password দিতে হয়, কিছুদিন পর বিষয়টি বিরক্তিকর হয়ে যায়। বিশেষ করে নিয়মিত server management, deployment বা development-এর সময় বারবার password টাইপ করতে সময় লাগে। এর সহজ সমাধান হচ্ছে SSH Key Authentication

একবার SSH key সেটআপ করে VPS-এ public key যোগ করে দিলে পরবর্তীতে নিজ কম্পিউটার থেকে সহজেই পাসওয়ার্ড ছাড়া লগিন করা যাবে। এভাবে:

এই পোস্টে আমরা দেখব কীভাবে Windows এবং macOS থেকে SSH key তৈরি করে VPS-এ passwordless SSH login সেটআপ করা যায়।

SSH Key Authentication কী?

SSH authentication-এর সাধারণ পদ্ধতিতে আমরা ব্যবহার করি:

Username + Password

যেমন:

তারপর VPS password চাইবে।

কিন্তু SSH key authentication-এ password-এর পরিবর্তে একটি key pair ব্যবহার করা হয়।

এই key pair-এর দুটি অংশ থাকে:

Private Key
Public Key

উদাহরণ:

Private Key → আপনার computer-এ থাকবে
Public Key  → VPS/server-এ থাকবে

সবচেয়ে গুরুত্বপূর্ণ বিষয়

Private key কখনো VPS, GitHub, অন্য computer বা অন্য কারও সঙ্গে share করা যাবে না।

Public key share করা যায়। Private key গোপন রাখতে হবে।

Part 1 — macOS থেকে Passwordless SSH

macOS-এ SSH client এবং প্রয়োজনীয় tools সাধারণত আগে থেকেই থাকে। তাই setup করা বেশ সহজ।

Step 1: SSH key আছে কিনা দেখুন

Terminal খুলে লিখুন:

ls ~/.ssh

এখানে এমন কিছু file দেখতে পারেন:

id_ed25519
id_ed25519.pub

অথবা পুরোনো configuration হলে:

id_rsa
id_rsa.pub

যদি id_ed25519 এবং id_ed25519.pub থাকে, তাহলে নতুন key তৈরি করার প্রয়োজন নেই।

Step 2: নতুন SSH key তৈরি করুন

যদি SSH key না থাকে, তাহলে আমরা Ed25519 key তৈরি করতে পারি:

ssh-keygen -t ed25519

আপনি এমন output দেখতে পারেন:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519):

এখানে সাধারণত Enter চাপলেই হবে।

এরপর আসবে:

Enter passphrase (empty for no passphrase):

এখানে দুটি option আছে।

Option 1 — Empty passphrase

শুধু Enter চাপুন।

তাহলে SSH key ব্যবহার করার সময় passphrase-ও চাইবে না।

Option 2 — Passphrase ব্যবহার

একটি passphrase দিতে পারেন।

এটি নিরাপত্তার জন্য ভালো, কারণ private key কেউ পেয়ে গেলেও সরাসরি ব্যবহার করতে পারবে না।

তবে তখন SSH agent ব্যবহার করে passphrase manage করা ভালো।

Beginner হিসেবে আপনি প্রথমে empty passphrase দিয়েও setup করতে পারেন, বিশেষ করে নিজের নিরাপদ computer-এ।

Step 3: Public key দেখুন

Public key দেখতে:

cat ~/.ssh/id_ed25519.pub

এটি দেখতে প্রায় এমন হবে:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI............... yourname@Mac

পুরো line-টি public key।

এটি copy করবেন।

Step 4: VPS-এ Public Key যোগ করুন

ধরা যাক VPS-এর IP:

192.168.106.88

Username:

root

macOS-এ ssh-copy-id available থাকলে ব্যবহার করতে পারেন:

ssh-copy-id [email protected]

এবার VPS-এর password চাইবে।

Password দিন।

এটি public key VPS-এর নিচের file-এ যোগ করবে:

/root/.ssh/authorized_keys

যদি macOS-এ ssh-copy-id না থাকে

কিছু macOS setup-এ ssh-copy-id default হিসেবে থাকে না।

সেক্ষেত্রে এই command ব্যবহার করতে পারেন:

cat ~/.ssh/id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

এখানেও VPS password একবার দিতে হবে।

Command-টি যা করছে:

  1. আপনার public key পড়ছে
  2. SSH দিয়ে VPS-এ যাচ্ছে
  3. .ssh directory তৈরি করছে
  4. authorized_keys file-এ public key যোগ করছে
  5. প্রয়োজনীয় permissions সেট করছে

Step 5: Password ছাড়াই Login Test করুন

এখন:

যদি সবকিছু ঠিক থাকে, VPS-এ সরাসরি login হয়ে যাবে।

আর password চাইবে না।

Part 2 — Windows থেকে Passwordless SSH

আধুনিক Windows 10/11-এ OpenSSH Client ব্যবহার করা যায়।

আমরা PowerShell ব্যবহার করব।

PowerShell খুলতে:

Start → PowerShell

অথবা Windows Terminal ব্যবহার করতে পারেন।

Step 1: SSH আছে কিনা পরীক্ষা করুন

PowerShell-এ:

ssh -V

উদাহরণ:

OpenSSH_for_Windows_9.xp1

এমন version দেখালে SSH client কাজ করছে।

Step 2: Windows-এ SSH Key তৈরি করুন

PowerShell-এ:

ssh-keygen -t ed25519

এরপর এমন প্রশ্ন আসতে পারে:

Enter file in which to save the key
(C:\Users\YourName/.ssh/id_ed25519):

Enter চাপুন। এরপর:

Enter passphrase (empty for no passphrase):

এখানে চাইলে passphrase দিতে পারেন।

Step 3: Public Key দেখুন

Windows-এ public key সাধারণত থাকবে:

C:\Users\YourName\.ssh\id_ed25519.pub

PowerShell থেকে দেখতে:

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

অথবা:

type $env:USERPROFILE\.ssh\id_ed25519.pub

আপনি এমন output পাবেন:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI............... YourName@Computer

পুরো line-টি copy করুন।

Step 4: Public Key VPS-এ যোগ করুন

Windows-এ যদি ssh-copy-id থাকে, তাহলে:

ssh-copy-id [email protected]

তবে Windows-এর অনেক setup-এ ssh-copy-id থাকে না।

সেক্ষেত্রে আমরা অন্যভাবে key copy করতে পারি।

Method 1 — PowerShell দিয়ে Public Key Copy

প্রথমে public key একটি variable-এ রাখুন:

$pubkey = Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

তারপর:

ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '$pubkey' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

VPS password চাইলে password দিন।

এটি public key VPS-এর:

/root/.ssh/authorized_keys

file-এ যোগ করবে।

Method 2 — Manual Copy/Paste

এটি beginner-এর জন্য খুব সহজ।

প্রথমে Windows-এ:

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

Output-এর পুরো line copy করুন।

তারপর password দিয়ে VPS-এ login করুন:

VPS-এ গিয়ে:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

এখন Windows থেকে copy করা public key paste করুন।

File save করুন।

তারপর:

chmod 600 ~/.ssh/authorized_keys

এখন exit দিয়ে VPS থেকে বের হয়ে আসুন।

Step 5: Passwordless Login Test করুন

Windows PowerShell-এ:

যদি setup ঠিক থাকে, password ছাড়াই login হবে।

SSH Key কোথায় থাকে?

macOS

সাধারণত ~/.ssh/ ফোল্ডারের মধ্যেঃ

id_ed25519
id_ed25519.pub

এখানে id_ed25519 হলো Private Key। আর id_ed25519.pub হলো Public Key

Windows

উইন্ডোজে সাধারণত C:\Users\YourName.ssh\ এর মধ্যে থাকেঃ

id_ed25519
id_ed25519.pub

একই নিয়ম:

id_ed25519     → Private Key
id_ed25519.pub → Public Key

VPS-এ Public Key কোথায় থাকে?

Linux VPS-এ user-এর home directory-র মধ্যে:

~/.ssh/authorized_keys

Root user হলে সাধারণত:

/root/.ssh/authorized_keys

এখানে একাধিক public key থাকতে পারে।

উদাহরণ:

ssh-ed25519 AAAA... computer1
ssh-ed25519 AAAA... computer2
ssh-ed25519 AAAA... laptop

তাই একই VPS-এ একাধিক computer থেকে SSH login করা সম্ভব।

SSH Config ব্যবহার করে আরও সহজ করুন

IP address বারবার লেখারও প্রয়োজন নেই।

ধরুন আপনি প্রতিদিন ব্যবহার করেন:

এটিকে আরও ছোট করা যায়:

ssh myvps

macOS SSH Config

ফাইল তৈরি করুন:

nano ~/.ssh/config

এর মধ্যে নিচের মত করে সেভ করুন।

Host myvps
    HostName 192.168.106.88
    User root
    IdentityFile ~/.ssh/id_ed25519

এভার ssh myvps লিখেই লগিন করতে পারবেন।

Windows SSH Config

Windows-এ config file সাধারণত:

C:\Users\YourName\.ssh\config

PowerShell থেকে config ফাইল নিচের কমান্ড ব্যবহার করে খুলতে পারেন:

notepad $env:USERPROFILE\.ssh\config

তারপর লিখুন:

Host myvps
    HostName 192.168.106.88
    User root
    IdentityFile ~/.ssh/id_ed25519

এরপর Save করুন।

এখন PowerShell-এ গিয়ে ssh myvps লিখলেই VPS-এ login হবে।

SSH Config কেন ব্যবহার করব?

ধরুন আপনার তিনটি server আছে:

Production
Development
Testing

তাহলে config:

Host production
    HostName 192.168.106.88
    User root
    IdentityFile ~/.ssh/id_ed25519

Host development
    HostName 192.168.106.89
    User root
    IdentityFile ~/.ssh/id_ed25519

Host testing
    HostName 192.168.106.90
    User root
    IdentityFile ~/.ssh/id_ed25519

এখন:

ssh production

অথবা:

ssh development

অথবা:

ssh testing

ব্যবহার করা যাবে।

SSH Key কাজ করছে কিনা Debug করবেন কীভাবে?

যদি passwordless login কাজ না করে:

আরও detailed output চাইলে:

এতে SSH কোন key ব্যবহার করার চেষ্টা করছে এবং authentication কোথায় fail করছে তা বোঝা যায়।

সবচেয়ে সাধারণ সমস্যা

1. VPS-এ authorized_keys ভুল জায়গায়

Root user হলে /root/.ssh/authorized_keys হচ্ছে সঠিক জায়গা।

2. File permission ভুল

VPS-এ:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

দিয়ে দিন।

3. Private key ভুল

যদি একাধিক key থাকে, নির্দিষ্ট key দিয়ে চেষ্টা করতে পারেন:

ssh -i ~/.ssh/id_ed25519 [email protected]

Windows-এ:

ssh -i $env:USERPROFILE\.ssh\id_ed25519 [email protected]

4. Public key পুরোপুরি copy হয়নি

Public key সাধারণত একটি সম্পূর্ণ line

এটি ভেঙে গিয়ে একাধিক line হলে authentication fail করতে পারে।

Password পুরোপুরি Disable করা কি উচিত?

SSH key authentication কাজ করছে নিশ্চিত হওয়ার আগে password authentication বন্ধ করবেন না।

প্রথমে test করুন:

Password ছাড়া login হচ্ছে কিনা নিশ্চিত করুন।

তারপর চাইলে VPS-এর SSH configuration-এ password authentication disable করা যায়।

তবে remote VPS হলে এটি করার আগে নিশ্চিত হতে হবে যে:

  • SSH key কাজ করছে
  • সঠিক private key আপনার কাছে আছে
  • অন্য কোনো working access method আছে

নাহলে ভুল configuration-এর কারণে VPS-এ lockout হওয়ার ঝুঁকি আছে।

Leave a Comment