বিপরীত এসএসএইচ টানেল


8

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

কমান্ড দিয়ে আমি ssh টানেল শুরু করেছি

$ssh –nNT –R :7777:localhost:5000 user@server

তারপরে আমি দেখতে পাচ্ছি যে সার্ভারটি এখন 7777 পোর্টের সাথে শুনছে

user@server:$netstat -ant | grep 7777

tcp        0      0 127.0.0.1:7777          0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:7777                :::*                    LISTEN  


$user@server:curl localhost:7777
Hello from local machine

সুতরাং যে কাজ করে। কার্ল অনুরোধটি আসলে স্থানীয় মেশিন থেকে পরিবেশিত হয়।

এখন, আমি কীভাবে সার্ভার ডট কম সক্ষম করব?

আমি এরকমভাবে এনজিনেক্স ব্যবহার করার চেষ্টা করেছি:

upstream tunnel {
    server 0.0.0.0:7777;
}
server {
  listen 8888;
  server_name server.com;
  location / {
    access_log /var/log/nginx/tunnel-access.log;
    error_log /var/log/nginx/tunnel-error.log;
    proxy_pass http://tunnel;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
  }
}

Nginx ত্রুটি লগ থেকে আমি দেখতে পাচ্ছি:

[error] 11389#0: *1 connect() failed (111: Connection refused)

আমি চেষ্টা করার চেষ্টা করছি iptables, কিন্তু কোন অগ্রগতি হয়নি। iptablesকেবল টানেলিংয়ের জন্য এনজিনেক্স চালানোর চেয়ে আরও মার্জিত সমাধানের মতো বলে মনে হচ্ছে। কোন সাহায্য ব্যাপকভাবে প্রশংসা করা হয়। ধন্যবাদ!

সম্পাদনা (সার্ভারের তথ্য যোগ করা)

সার্ভারের বিশদ: উবুন্টু ১০.১০ ম্যাভেরিক (স্ট্যান্ডার্ড ইনস্টল)

সম্পাদনা (এনগিনেক্স বিকল্প)

@ মার্সেল জি এর পরামর্শ অনুসারে এনজিঙ্ক্স বিকল্পগুলি 0.0.0.0:7777 দ্বারা 127.0.0.1:7777 এ পরিবর্তিত হয়েছে। এখনও নন-এনগিনেক্স সমাধান সন্ধান করছে।

সম্পাদনা (চূড়ান্ত সমাধান আপডেট)

@ এসসিউরাস যেমন উল্লেখ করেছেন, GatewayPorts yesআপনার sshd_config ফাইলটিতে তা নিশ্চিত করুন। আমার প্রথমে কনফিগার ফাইলে এই লাইনটি ছিল, তবে এর /etc/init.d/ssh reloadপরিবর্তে আমার একটি ইস্যু করা দরকার restart(কমপক্ষে এটি উবুন্টুতে মনে হয়)।

স্থানীয় মেশিনে ব্যবহৃত চূড়ান্ত কমান্ড: ssh -nNT -R '*:8888:localhost:5000' user@server

তারপরে সার্ভারটি নির্দেশ করতে হবে যে এটি *: 8888 এর সাথে শুনছে lsof -i tcp:888

user@server:~$ sudo lsof -i tcp:8888
COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd    14711 user    8u  IPv4 1791013      0t0  TCP *:8888 (LISTEN)
sshd    14711 user    9u  IPv6 1791014      0t0  TCP *:8888 (LISTEN)

উত্তর:


9

এনগিনেক্স ব্যবহার করার দরকার নেই।

আপনার SSH ডেমন কনফিগারেশনে (এটা হওয়া উচিত , / etc / SSH / sshd_config ) সেট GatewayPorts করার clientspecified এবং এটি পুনরায় লোড করুন। অন্যান্য টানেলগুলি আপনার টানেলের সাথে সংযোগ রাখতে সক্ষম হওয়ার জন্য এটি প্রয়োজনীয়। এগুলি ব্যতীত, কেবলমাত্র আপনার সার্ভারে চলমান প্রোগ্রামগুলি এটি ব্যবহার করতে সক্ষম হবে।

এখন আপনাকে যা করতে হবে তা হ'ল 7777 পোর্টের পরিবর্তে 8888 পোর্টে শুনতে আপনার ssh কমান্ডটি পরিবর্তন করা উচিত This

ssh -nNT -R '*:8888:localhost:5000' user@server

তারকাচিহ্নটি sshd কে কেবল লুপব্যাক ইন্টারফেসের পরিবর্তে সমস্ত ইন্টারফেসে 8888 পোর্ট শুনতে শুনতে বলে। আপনি গেটওয়েপোর্টগুলি পরিবর্তন না করে থাকলে এটি ব্যর্থ হবে ।


ঠিক আছে, আমি আপনার পরামর্শটিতে স্যুইচ করেছি এবং যখন আমি curl http://server.com:8888, আমি ত্রুটি পাই curl: (7) couldn't connect to host। আমি এখনও লোকালহোস্টটি কার্ল করতে পারি: সার্ভারের শেল থেকে 8888 এবং এটি স্থানীয় মেশিনে আঘাত করে।
ক্রিস

বিটিডব্লিউ, আপনার সরবরাহিত নতুন কমান্ডটি চেষ্টা করার আগে আমি nginx বন্ধ করে দিয়েছি।
ক্রিস

@ ক্রিস কি আপনার সার্ভারের sshd_config এ গেটওয়েপোর্টস সক্ষম? যদি তা না হয় তবে এটি সক্ষম করুন। টানেলটি শুরু করার পরে, নিশ্চিত করুন যে ssh কেবল লুপব্যাকের ঠিকানার চেয়ে বেশি শুনছে; আপনি নেটস্প্যাট প্রতিস্থাপন এবং এর সাথে গ্রেপ করতে পারেন lsof -i tcp:8888
সাইরাসাস

অসাধারণ! তাই আমি ছিল GatewayPorts yessshd_config মধ্যে এবং আমার মনে হয় আমি তো /etc/init.d/ssh পুনর্সূচনা করেনি, কিন্তু এই সময় আমি reload। আমি পার্থক্য কি তা নিশ্চিত নই, তবে এখন এটি সম্পূর্ণভাবে কাজ করে !! ধন্যবাদ মিলিয়ন @ সিকিউরাস Thanks
ক্রিস

1

আমি দ্বিতীয় বিজ্ঞানীর জবাব দ্বিতীয় কিন্তু যদি কোনও কারণে আপনাকে এনজিনেক্স ব্যবহার করা প্রয়োজন ... আমার অনুমান যে আপনার উজানের সংজ্ঞাটি নষ্ট হয়ে গেছে।

আপনি আপনার এসএসএস বিপরীত টানেলটি যেভাবে তৈরি করেছেন এটি কেবল লোকালহোস্টে (127.0.0.1 এবং :: 1) শুনবে, সুতরাং আপনি নিম্নলিখিত প্রবাহের সংজ্ঞাটি একবারে দেওয়ার চেষ্টা করতে চাইতে পারেন:

upstream tunnel {
    server 127.0.0.1:7777;
}

কেবলমাত্র রেকর্ডের জন্য: আমি এখনও কখনও আমার আত্মনিগ্রহ করা হয়নি তাই এটি কেবল অনুমান।


ধন্যবাদ! এটি আসলে এটি কাজ করে। যদি সম্ভব হয় তবে আমি কেবল টানেলিংয়ের কাজ পেতে nginx ব্যবহার না করাকে পছন্দ করি তবে এটি সম্ভব যে জেনে রাখা ভাল
chris
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.