Q - বিনামূল্যে GCP টিয়ারে একটি Git সার্ভার তৈরি করতে চাই - Nginx দিয়ে SSH প্রক্সি পর্ব -
হ্যালো, আমি অযোগ্য।
এটি 'হা' এর একটি সিক্যুয়েল।
এভাবে রাখলে SSH দিয়ে Push করা যাবে না
বর্তমান কাঠামো
ক্লায়েন্ট সাইড - VPS VPN srv + Nginx proxy srv - GCP Gitea
আমি এই পদ্ধতিতে VPS এর মাধ্যমে GCP তে SSH সংযোগ করতে চাই।
আমি ভাবছিলাম কী করা যায়, কিন্তু সমাধান পেয়েছি।
আমার মনে পড়ল stream প্রক্সি, যা আমি অতীতে Nginx দিয়ে ইমেল প্রক্সি করার চেষ্টা করার সময় ব্যবহার করতে চেয়েছিলাম।
মূলত, HTTP/HTTPS প্রোটোকল ছাড়াও অন্যান্য প্রোটোকল সহজেই প্রক্সি করা সম্ভব।
তবে, এই ক্ষেত্রে এটি IP এবং পোর্টগুলির মধ্যে যোগাযোগের একটি চিত্র, তাই এটি ডোমেনের জন্য প্রক্সি করা যাবে না।
এর মানে হল, তবে, সিনট্যাক্সটি একবার দেখে নেওয়া দ্রুত হবে।
stream {
server {
listen 2222;
proxy_pass 10.1.0.6:2222;
proxy_timeout 1m;
proxy_connect_timeout 1s;
}
}
এই সার্ভারটি 2222 পোর্টে Listen করে গ্রহণ করবে এবং 10.1.0.6 IP অ্যাড্রেসের 2222 পোর্টে প্রক্সি করবে।
কেন এটি ডোমেন-ভিত্তিক করা যায় না তার কারণ এই ইস্যুটিতে আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে, তাই আগ্রহী হলে দেখে নিতে পারেন।
তাহলে, উদাহরণস্বরূপ, যদি 22 নম্বর পোর্ট প্রক্সি করা হয় তবে কী হবে?
stream {
server {
listen 22;
proxy_pass 10.1.0.6:2222;
}
}
হ্যাঁ, যদি আপনি এই সার্ভারে 22 নম্বর পোর্টে SSH করার চেষ্টা করেন, তবে এটি সবই 10.1.0.6:2222 এ SSH করার চেষ্টা করবে।
যদি এই চলমান সার্ভারটি স্ট্যান্ডার্ড 22 নম্বর পোর্ট ব্যবহার করার জন্য কনফিগার করা হয়, তবে এটি কার্যকরভাবে SSH সংযোগ অক্ষম করে দেবে, যা ভালো নয়।
যদি এমনটা হয়, তবে কি কোনো সমাধান আছে? সে কথা বাদ দিয়ে...
সুতরাং, 2222 নম্বর পোর্ট Listen করার জন্য, এই FreeBSD সার্ভারটি pf ব্যবহার করে 2222 নম্বর পোর্টটি সাময়িকভাবে খুলবে।
pass in on wg0 proto tcp from 10.1.0.6 to any port 2222
এর মাধ্যমে, যদি আক্রমণকারী 10.1.0.6 IP অ্যাড্রেসটি দেখতে না পায়, তবে এই রাউটিং প্রয়োগ করা হবে না, এবং WireGuard হ্যাক না হওয়া পর্যন্ত 2222 নম্বর পোর্টে পৌঁছানো যাবে না।
সেটিংস প্রয়োগ
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
doas service nginx restart
তাহলে Gitea এর দিকেও
ডিফল্টরূপে, Gitea স্ট্যান্ডার্ড SSH পোর্ট 22 ব্যবহার করে, তাই এটি এভাবে কাজ করবে না।
সুতরাং, আমরা কনফিগারেশন ফাইল app.ini সম্পাদনা করব।
[server]
SSH_DOMAIN = git.mydomain.jp
DOMAIN = git.mydomain.jp
HTTP_PORT = 3000
ROOT_URL = https://git.mydomain.jp/
APP_DATA_PATH = /var/lib/gitea/data
DISABLE_SSH = false
SSH_PORT = 2222
এটি এখন 2222 নম্বর পোর্টকে স্ট্যান্ডার্ড হিসাবে ব্যবহার করবে।
নিচে রিস্টার্ট করুন
sudo service gitea restart
sudo service gitea status
GCP-তে ফায়ারওয়ালকে অত্যন্ত সংকীর্ণ করা
এটি বিরক্তিকর হওয়ায় আমি প্রায় সব বন্ধ করে দিয়েছি।

Gitea-তে git push করা যায় কিনা তা পরীক্ষা করা
প্রথমে ssh -T চালানো যাক।
$ ssh -T -p 2222 git@git.mydomain.jp
Hi there, haturatu! You've successfully authenticated with the key named x1@artix, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
এটি কাজ করেছে।
এবং Gitea-তে একটি রেপোজিটরি তৈরি করার চেষ্টা করি।

তারপর, git push
$ git push -u origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 1.30 KiB | 1.30 MiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://git.mydomain.jp:2222/haturatu/wg-genconf.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
দারুণ!!!!!
উপসংহার
যদি কেউ অ্যাকাউন্ট চান, তাহলে আমার সাথে যোগাযোগ করুন এবং আমি তৈরি করে দেব।
শেষ।