Q - मुफ़्त टियर जीसीपी के साथ गिट सर्वर बनाना चाहता हूँ - एनजीआईएनएक्स एसएसएच प्रॉक्सी संस्करण -

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।
यह "हा" का सीक्वल है।

इस तरह से SSH के साथ पुश नहीं किया जा सकता

वर्तमान संरचना
क्लाइंट साइड - वीपीएस वीपीएन एसआरवी + एनजीआईएनएक्स प्रॉक्सी एसआरवी - जीसीपी गीटिया
मैं इस तरह से वीपीएस के माध्यम से जीसीपी तक एसएसएच पास करना चाहता हूँ।

खैर, मैं सोच रहा था कि क्या करूँ, लेकिन मैंने इसे हल कर लिया।
मुझे stream प्रॉक्सी याद आया जिसका मैंने अतीत में Nginx के साथ ईमेल प्रॉक्सी करने की कोशिश करते समय उपयोग करने की कोशिश की थी।
संक्षेप में, HTTP/HTTPS प्रोटोकॉल के अलावा अन्य प्रोटोकॉल को भी आसानी से प्रॉक्सी किया जा सकता है।
हालांकि, इस मामले में, यह आईपी और पोर्ट के बीच संचार की एक छवि है, इसलिए यह डोमेन के लिए प्रॉक्सी नहीं कर सकता है।
इसका मतलब है, लेकिन एक बार सिंटैक्स देखना तेज़ होगा।

stream {
    server {
        listen 2222; 
        proxy_pass 10.1.0.6:2222; 
        proxy_timeout 1m;
        proxy_connect_timeout 1s;
    }
}

यह सर्वर 2222 पोर्ट पर सुनता है और कनेक्शन स्वीकार करता है, और उन्हें आईपी एड्रेस 10.1.0.6 के 2222 पोर्ट पर प्रॉक्सी करता है।
यह डोमेन के आधार पर क्यों नहीं किया जा सकता है, इसका कारण इस इश्यू में अधिक विस्तार से बताया गया है, इसलिए यदि आप उत्सुक हैं तो कृपया इसे देखें।

और उदाहरण के लिए, यदि हम पोर्ट 22 को प्रॉक्सी करते हैं तो क्या होगा?

stream {
    server {
        listen 22; 
        proxy_pass 10.1.0.6:2222; 
    }
}

हाँ, यदि आप इस सर्वर पर पोर्ट 22 पर SSH करने का प्रयास करते हैं, तो यह सभी को 10.1.0.6:2222 पर SSH करने का प्रयास करेगा
यदि यह चल रहा सर्वर मानक पोर्ट 22 पर कॉन्फ़िगर किया गया है, तो SSH कनेक्शन स्थापित करना प्रभावी रूप से असंभव हो जाएगा, जो अच्छा नहीं है।
यदि ऐसा होता है, तो क्या वास्तव में कोई समाधान है? खैर, उस बात को अभी के लिए छोड़ दें...

तो, चूंकि पोर्ट 2222 को सुनना ज़रूरी है, इसलिए यह FreeBSD सर्वर pf के साथ अस्थायी रूप से पोर्ट 2222 खोलता है।

pass in on wg0 proto tcp from 10.1.0.6 to any port 2222

इसके साथ, यदि हमलावर 10.1.0.6 का आईपी एड्रेस नहीं देख सकता है, तो यह रूटिंग लागू नहीं होगी, इसलिए जब तक WireGuard हैक नहीं हो जाता, तब तक इस 2222 पोर्ट तक नहीं पहुंचा जा सकता है।
सेटिंग्स लागू करें

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
doas service nginx restart

फिर गीटिया साइड भी

डिफ़ॉल्ट रूप से, 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

जीसीपी पर फ़ायरवॉल को बहुत संकीर्ण करें

यह परेशान करने वाला था, इसलिए मैंने इसे लगभग बंद कर दिया।
छवि

गीटिया के साथ गिट पुश संभव है या नहीं, इसका परीक्षण करें

सबसे पहले, 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.

यह काम कर गया।

और फिर मैं गीटिया पर एक रिपॉजिटरी बनाने की कोशिश करूँगा।
छवि
और फिर, 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'.

वाह!!!!

निष्कर्ष

यदि किसी को खाता चाहिए, तो कृपया मुझसे संपर्क करें और मैं आपके लिए एक बना दूँगा।
समाप्त।

Related Posts