রিমোট ডেটাবেস অ্যাক্সেস: পুরো ইন্টারনেটের সামনে না খোলার উপায়
আপনার কাজের কম্পিউটার থেকে VDS-এর ডেটাবেসে সংযোগের দুটি উপায়: SSH টানেল এবং বিধিনিষেধসহ খোলা পোর্ট। কোনটি বেছে নেবেন এবং কীভাবে যাচাই করবেন।
আপডেট: ২৩ আগস্ট, ২০২৬
0.0.0.0-এ লিসেন করা এবং root পাসওয়ার্ডযুক্ত একটি ডেটাবেস প্রথম স্ক্যান পর্যন্তই টিকে থাকে — আর পুরো অ্যাড্রেস রেঞ্জটি অবিরাম স্ক্যান করা হয়। একই সময়ে, ল্যাপটপ থেকে ক্লায়েন্ট দিয়ে ডেটাবেসে সংযোগ করা সুবিধাজনক এবং প্রায়শই প্রয়োজনীয়। দুটি উপায় আছে, এবং তাদের মধ্যে কেবল একটিরই কোনো অসুবিধা নেই।
পদ্ধতি ১: SSH টানেল (প্রস্তাবিত)
ডেটাবেস 127.0.0.1-এ বাইন্ড করা থাকে, আর বাইরে থেকে কেবল SSH ছাড়া কিছুই উন্মুক্ত থাকে না। আপনার নিজের কম্পিউটারে:
ssh -L 5433:127.0.0.1:5432 root@YOUR_ADDRESS -N
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
এখন DBeaver, TablePlus বা psql-এ 127.0.0.1:5433-এ সংযোগ করুন। ডেটাবেসের দৃষ্টিকোণ থেকে এটি একটি লোকাল সংযোগের মতো দেখায়।
বেশিরভাগ ক্লায়েন্ট নিজেরাই টানেল সেট আপ করতে পারে: সংযোগ সেটিংসে একটি “SSH” ট্যাব থাকে। প্যানেলের “Overview” /hosting/vds/m/<id> থেকে মেশিনের অ্যাড্রেস এবং আপনার কী উল্লেখ করুন।
এই পদ্ধতির সুবিধা: ডেটাবেস বা ফায়ারওয়াল কনফিগারেশনে আপনাকে কিছুই পরিবর্তন করতে হবে না।
পদ্ধতি ২: সীমাবদ্ধতাসহ একটি খোলা পোর্ট
এটি শেষ উপায় — যখন একটি পরিচিত স্ট্যাটিক অ্যাড্রেসযুক্ত বাহ্যিক সার্ভিস সংযোগ করে। নিচের প্রতিটি ধাপ বাধ্যতামূলক:
ufw allow from 203.0.113.10 to any port 5432 proto tcp
PostgreSQL-এর জন্য: listen_addresses = '*' এবং pg_hba.conf-এ hostssl all all 203.0.113.10/32 scram-sha-256 লাইনটি। MySQL-এর জন্য: bind-address = 0.0.0.0 এবং একটি নির্দিষ্ট অ্যাড্রেসে বাইন্ড করা ইউজার:
CREATE USER 'app'@'203.0.113.10' IDENTIFIED BY 'long-password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'203.0.113.10';
TLS ছাড়া এমন সংযোগ ডেটা প্লেইন টেক্সটে পাঠায়। সোর্স উল্লেখ না করে ufw allow 5432 — এর অর্থ ঠিকই “এটিকে পুরো ইন্টারনেটের জন্য খুলে দেওয়া”।
যাচাই
অন্য একটি মেশিন থেকে:
nmap -Pn -p 3306,5432,6379,27017 YOUR_ADDRESS
প্রত্যাশিত উত্তর হলো সব পোর্টে filtered বা closed। লোকালি যাচাই করুন কী এবং কোথায় লিসেন করছে:
ss -tulpn | grep -E '3306|5432|6379'
সাধারণ ভুল
| লক্ষণ | কারণ |
|---|---|
| ক্লায়েন্ট টানেলের মাধ্যমে সংযোগ করছে না | লোকাল পোর্টটি দখল করা আছে — অন্যটি বেছে নিন |
Host ... is not allowed to connect | MySQL ইউজারটি localhost-এ বাইন্ড করা |
no pg_hba.conf entry for host | আপনার অ্যাড্রেসের জন্য কোনো রুল নেই |
| পোর্ট খোলা কিন্তু কিছুই সাড়া দিচ্ছে না | ডেটাবেস কেবল 127.0.0.1-এ লিসেন করছে |
| কাজ করেছিল, তারপর বন্ধ হয়ে গেল | আপনার প্রোভাইডার আপনাকে ডাইনামিক অ্যাড্রেস দেয় — টানেলের পক্ষে আরেকটি যুক্তি |
মেশিনগুলিতে IPv6 নেই, দ্বিতীয় অ্যাড্রেসও নেই। “Overview” থেকে একক পাবলিক IPv4 অ্যাড্রেসের জন্য সব রুল লিখুন — দুই স্ট্যাক নিয়ে কোনো বিভ্রান্তি হবে না।