এনএসটি রাউটারের পিছনে অফিস হোস্টে এসএসএইচ অ্যাক্সেস


33

আমি বাড়ি থেকে আমার অফিস লিনাক্স হোস্টের ssh বন্দরে অ্যাক্সেস করতে চাই। দুর্ভাগ্যক্রমে হোস্টটি একটি NAT রাউটারের পিছনে অবস্থিত। সুতরাং, আইপি ঠিকানাটি সর্বজনীনভাবে উপলভ্য নয়। তবে অন্য একটি ইন্টারনেট হোস্ট (সার্ভার) এ অ্যাক্সেস রয়েছে যা দুর্ভাগ্যক্রমে কেবল অ-রুট অ্যাক্সেস। কিছুক্ষণ অনুসন্ধানের পরেও আমি কোনও উপযুক্ত সমাধান খুঁজে পাই না।

নিম্নলিখিত সেটআপ:

  • NAT এর পিছনে অফিস পিসি (লিনাক্স, রুট অ্যাক্সেস) (আইপি পাবলিক নয়) তবে সম্পূর্ণ ইন্টারনেট অ্যাক্সেস।
  • সার্ভার পিসি (লিনাক্স, কোনও রুট অ্যাক্সেস নেই) স্ট্যাটিক এবং পাবলিক আইপি এবং সম্পূর্ণ ইন্টারনেট অ্যাক্সেস।
  • হোম পিসি (লিনাক্স, রুট অ্যাক্সেস) NAT এর পিছনে (আইপি পাবলিক নয়) তবে সম্পূর্ণ ইন্টারনেট অ্যাক্সেস।

সম্ভাব্য সংযোগগুলি: অফিস পিসি -> সার্ভার <- হোম পিসি

সম্ভব নয়: অফিস পিসি <-X- সার্ভার-এক্স-> হোম পিসি

হোম পিসি বা সার্ভার উভয়ই অফিস পিসিতে অ্যাক্সেস শুরু করতে পারে না। তবে অফিস পিসি এবং হোম পিসি উভয়ই সার্ভারের সাথে সংযোগ শুরু করতে পারে।

বিপরীত এসএসএইচ টানেল সম্ভব নয়: আমি বিপরীত এসএসএল-টানেল নামে একটি পদ্ধতি চেষ্টা করেছি tried দুর্ভাগ্যক্রমে এর জন্য সার্ভারে গেটওয়েপোর্টগুলি / etc / ssh / sshd_config- এ "হ্যাঁ" সেট করা দরকার, যেখানে আমার কোনও রুট অ্যাক্সেস নেই।

নীতিগতভাবে এটি সম্ভব হওয়া উচিত:

0) সার্ভারে আমি একটি ইউজারস্পেস প্রোগ্রাম শুরু করি যা 2 টি পোর্ট (1 আগত, 1 বহির্মুখী) শুনবে

1) আমার অফিসের পিসিতে আমি অন্য একটি প্রোগ্রাম পরিচালনা করি যা সার্ভারের বহির্গামী বন্দরের জন্য একটি টিসিপি সংযোগ খোলা রাখে।

2) বাসা থেকে আমি সার্ভারের ইনকামিং পোর্টে সংযোগ করি।

এটির জন্য এখানে একটি স্ট্যান্ডার্ড সমাধান হওয়া উচিত।

এর সমাধানের দ্রুত ও পরিষ্কার সমাধান কী?

অকপট


1
কাজ পিসি একটি ssh টানেল স্থাপন করতে বাড়িতে সংযোগ করতে পারেন? en.gentoo-wiki.com/wiki/Autossh

আপনি sftp এবং পোর্ট ফরওয়ার্ডিং সহ ফাইলজিলা ব্যবহার করতে পারেন। চেক আউট করুন: superuser.com/a/1286681/141314
নোয়াম মানস

উত্তর:


31
youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc

পরবর্তীতে:

you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc

you@homepc$ ssh youatwork@localhost -p 23456

আপনি যা করতে পারেন তা হ'ল: পদক্ষেপ 1 এ অফিসের পিসি থেকে সার্ভারে একটি দূরবর্তী পোর্ট ফরওয়ার্ড করুন ( 12345উদাহরণ হিসাবে ব্যবহৃত হয়, কোনও পোর্ট> 1024 করা উচিত)। এখন সার্ভারে 12345 এ সংযোগ স্থাপনের সাথে আপনাকে অফিসপিসিতে 22 পোর্টের সাথে সংযুক্ত করা উচিত।

পদক্ষেপ 2 এ, আপনার হোম মেশিন থেকে 23456 পোর্টটি সার্ভারে 12345 এ ফরোয়ার্ড করুন (যেহেতু এটি অফিসপিসি: 22 তে ফরোয়ার্ড হবে 1 ধাপে সেটআপ হিসাবে)

পদক্ষেপ 3 এ, আপনি আপনার অফিসের পিসি লগইন দিয়ে 23456 স্থানীয় বন্দরের সাথে সংযুক্ত হন । এটি আপনার সার্ভারে 12345 পোর্ট করতে 2 ধাপে এবং আপনার অফিসের পিসিতে 1 ধাপে এগিয়ে দেওয়া হবে।

নোট করুন যে আমি ফোরওয়ার্ডিংয়ের জন্য অটোশ ব্যবহার করছি, কারণ এটি একটি এসএসএস র‍্যাপার যা স্বয়ংক্রিয়ভাবে টানেলটি সংযোগ বিচ্ছিন্ন হওয়ার পরে পুনরায় সংযুক্ত করে; তবে ন্যাশনাল এসএস পাশাপাশি কাজ করবে, যতক্ষণ না সংযোগ না নেমে যায়।

একটি সম্ভাব্য দুর্বলতা রয়েছে: সার্ভারপিসিতে লোকালহোস্ট: 12345 এ যে কেউ সংযোগ করতে পারবেন সে এখন অফিসপিসি: 22 এ সংযোগ করতে পারে এবং এতে হ্যাক করার চেষ্টা করতে পারে। (নোট যে আপনি একটি SSH সার্ভারের চালাচ্ছেন, তাহলে আপনি এটিকে যেকোনোভাবে মৌলিক সুরক্ষা যা ডিফল্টভাবে উপর উপরে নিরাপদ উচিত; আমি রুট লগইন নিষ্ক্রিয় এবং পাসওয়ার্ড প্রমাণীকরণ অক্ষম অন্তত সুপারিশ - দেখুন উদাঃ এই )

সম্পাদনা করুন : আমি এটি একই কনফিগারেশনের মাধ্যমে যাচাই করেছি এবং এটি কাজ করে। GatewayPorts noশুধুমাত্র স্থানীয় সুরঙ্গ নয়, কেবল বিশ্বের জন্য উন্মুক্ত বন্দরগুলিকেই প্রভাবিত করে। ফরোয়ার্ড করা বন্দরগুলি হ'ল:

homepc:
  outgoing ssh to serverpc:22
  listening localhost:23456 forwarded through ssh tunnel
serverpc:
  listening ssh at *:22
  incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
  listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
  outgoing ssh to serverpc:22
  incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22

সুতরাং, যতটা নেটওয়ার্কের স্ট্যাক সংশ্লিষ্ট হয়, এটি নিজ নিজ লুপব্যাক ইন্টারফেস (প্লাস SSH সংযোগে সমস্ত স্থানীয় ট্রাফিক আছে করার serverpc); অতএব, GatewayPortsএকেবারে চেক করা হয় না।

তবে নির্দেশিকা রয়েছে AllowTcpForwarding: যদি তা হয় noতবে লুপব্যাক ইন্টারফেসের বাইরেও কোনও ফরওয়ার্ডিং অনুমোদিত নয় বলে এই সেটআপটি ব্যর্থ হবে।

গুহাত :

  • যদি অটোশ এবং সাম্প্রতিক ssh ব্যবহার করা হয় তবে আপনি এসএসএস ব্যবহার করতে ServerAliveIntervalএবং ServerAliveCountMaxটানেলটি ধরে রাখতে পারেন। অটোশ একটি অন্তর্নির্মিত চেক আছে, তবে সম্ভবত ফেডোরায় এটির কিছু সমস্যা রয়েছে। -M0এটি অক্ষম করে এবং -oServerAliveInterval=20 -oServerAliveCountMax=3সংযোগটি শেষ হয়ে গেছে কিনা তা পরীক্ষা করে - প্রতি 20 সেকেন্ড চেষ্টা করে, যদি এটি সারিতে 3x ব্যর্থ হয়, এসএসএস থামায় (এবং অটোশ একটি নতুন করে তোলে):

    autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
    
    autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
    
  • ফরোয়ার্ড ব্যর্থ হলে, এসএসএস টানেলটি পুনরায় চালু করতে দরকারী হতে পারে -oExitOnForwardFailure=yes- এটি ব্যবহার করে - বন্দরটি ইতিমধ্যে আবদ্ধ থাকলে আপনি একটি কার্যকরী এসএসএইচ সংযোগ পেতে পারেন, তবে কোনও ফরোয়ার্ড টানেল নেই।

  • ব্যবহার ~/.ssh/configঅপশন (এবং পোর্ট) এর জন্য যুক্তিযুক্ত আর কমান্ড লাইন খুব বাগাড়ম্বরপূর্ণ পেতে হয়। উদাহরণ স্বরূপ:

    Host fwdserverpc
        Hostname serverpc
        User notroot
        ServerAliveInterval 20
        ServerAliveCountMax 3
        ExitOnForwardFailure yes
        LocalForward 23456 localhost:12345
    

তারপরে আপনি কেবল সার্ভার ওরফে ব্যবহার করতে পারেন:

    autossh -M0 fwdserverpc

আপনি মনে করছেন এই পদ্ধতিটিকে আমি বিশ্বাস করি, তাকে "বিপরীত এসএস-টানেল" বলা হয়। দুর্ভাগ্যক্রমে এর জন্য সার্ভারে গেটওয়েপোর্টস / etc / ssh / sshd_config এ "হ্যাঁ" সেট করা দরকার। এই সার্ভারটিতে কোনও গেটওয়ে পোর্ট সক্ষম নয় এবং সেখানে আমার কোনও রুট অ্যাক্সেস নেই।

3
@ ফ্র্যাঙ্ক: আসলে, আমি এটি মনে করি না: GatewayPorts noখোলা বন্দরগুলি কেবল লুপব্যাক ইন্টারফেসে অ্যাক্সেসযোগ্য হিসাবে সীমাবদ্ধ করে; নোট করুন যে পদক্ষেপ 2 এ আপনি লুপব্যাক ইন্টারফেসে ফরোয়ার্ড করছেন (বাস্তবে, উভয় ফরোয়ার্ডগুলি "কেবলমাত্র লোকালহোস্ট"), সুতরাং এটি কাজ করতে পারে ( AllowTcpForwarding noএসএসডিডি কনফিগারেশনে এটি ভেঙে যাবে)।
পিসকভোর

3
@ ফ্র্যাঙ্ক: হ্যাঁ, নিশ্চিত হয়েছে এটি এমনকি সঙ্গে কাজ করে GatewayPorts no; উত্তর সম্পাদনা। মনে রাখবেন যে অন্যান্য নির্দেশাবলী রয়েছে (যেমন PermitOpenএবং AllowTcpForwarding) যা এই সেটআপটি ভেঙে ফেলতে পারে: manpagez.com/man/5/sshd_config
পিসকভর

1
দুর্দান্ত উত্তর! এটি কাজ করে, আপনি আমার সপ্তাহান্তে বাঁচিয়েছেন! অনেক ধন্যবাদ!!

1
আমার অটোশ সংস্করণ (ফেডোরা কোর) -এম ছাড়া টার্মিনাল থেকে চলতে পারে না। আমি অন্য একজন ব্যক্তির সাথেও যুক্ত হয়েছি যারা অভিজ্ঞ that আপনি ঠিক বলেছেন যে ম্যানুয়ালটিতে এটি একটি alচ্ছিক যুক্তি হিসাবে চিহ্নিত হয়েছে। এটি যদি অনেক লোকের পক্ষে কাজ করে তবে ভাল, কারণ সবার জন্য নয়।
ইয়ারোস্লাভ নিকিতেনকো

4

আপনি যদি বাসা থেকে এবং অভ্যন্তরীণ সার্ভার থেকে আপনার অফিস লিনাক্স মেশিনে অভ্যন্তরীণ সার্ভারে এসএসএস করতে পারেন তবে হোম থেকে আপনি ProxyCommandসার্ভারের মাধ্যমে nc(নেটক্যাট) মাধ্যমে অভ্যন্তরীণ মেশিনে নীরবে বাউন্স করার জন্য এসএসএসটি ব্যবহার করতে পারেন net

# ~/.ssh/config on your home machine:
Host internalpc 
   ForwardAgent yes 
   ProxyCommand ssh user@server.example.com exec nc internal.pc.example.com %p

তারপরে আপনি ssh user@internalpcএবং আপনি নীরবে সার্ভার মেশিনের মাধ্যমে এগিয়ে চলেছেন, উভয় প্রান্তে কোনও বন্দর বা টানেল খোলার প্রয়োজন নেই।


1
আপনার উত্তরের জন্য ধন্যবাদ. দুর্ভাগ্যক্রমে, হোম পিসি বা সার্ভার দুটিই অফিস পিসিতে অ্যাক্সেস শুরু করতে পারে না। তবে অফিস পিসি এবং হোম পিসি উভয়ই সার্ভারের সাথে সংযোগ শুরু করতে পারে।

4

আপনি এসএসএইচকে দূর থেকে অ্যাক্সেস করতে চান এমন কম্পিউটারে রোবো-টিটিও ইনস্টল করুন।

  • এটি আপনাকে কোথাও গুগল টক ক্লায়েন্ট অ্যাপ্লিকেশন থেকে এসএসএইচ অ্যাক্সেস করার অনুমতি দেবে।
  • কোনও সার্বজনীন আইপি ঠিকানা বা বিশেষ সেটিংয়ের দরকার নেই।
  • এটি ফ্রি এবং ওপেন সোর্স, কোনও অ্যাপ্লিকেশন পরিষেবাদি আর প্রদান করছে না।
  • এসএসএইচ পোর্ট খোলার দরকার নেই (আপনার কম্পিউটারটি সুরক্ষিত রাখুন)।
  • কোনও টানেলিং খোলার দরকার নেই (যেমন, ভিপিএন বা এর মতো কিছু)

নিম্নলিখিত স্থাননির্দেশ নির্দেশাবলী অপ্রচলিত, সাইট সরানো হয়েছে হিসাবে। নতুন ইউআরএল হল https://github.com/forigarafa/robotito ito

আমি একটি স্ক্রিপ্ট তৈরি করেছি (আমার রাস্পবিয়ান ওএসে রাস্পবেরি পাইতে পরীক্ষিত) যাতে আপনি সহজেই রাস্পবেরি পাই, ডেবিয়ান বা উবুন্টু বাক্সে (দেবিয়ান প্যাকেজ বিতরণ) রোব-টিটিও ইনস্টল করতে পারেন। এটি আপনার লিনাক্স বক্সকে রিমোটযোগ্য করার পদক্ষেপগুলি:

  1. শেল কমান্ড খুলুন বা আপনি এটিকে টার্মিনাল বলতে পারেন, আপনার হোম ফোল্ডারে যেতে পারেন, কমান্ডের সাহায্যে ইনস্টলার স্ক্রিপ্ট ডাউনলোড করুন:

    $ wget https://opengateway.googlecode.com/files/robotito
    
  2. এর পরে কমান্ড লিখে স্ক্রিপ্টটি চালান:

    $ sudo ./robotito
    
  3. এবং তারপরে আপনি credentials.rbআপনার GTalk অ্যাকাউন্ট ব্যবহার করে রোব-টিটিওর কনফিগারেশন ফোল্ডার থেকে ফাইলটি সম্পাদনা করতে পারেন এবং এটি Ctrl+ Xএবং টিপে টিপুন Y। ডিফল্ট ন্যানো সম্পাদক ব্যবহার করছে।

  4. কমান্ডের সাহায্যে রোবো-টিটিও ফোল্ডার থেকে রোবো-টিটিটিও চালাচ্ছেন

    $ cd robotito
    $ ./jabbershd start
    
  5. এখন এটি সম্পন্ন হয়ে গেলে আপনি যে কোনও গুগল টক ক্লায়েন্টের কাছ থেকে এসএসএইচ ব্যবহার করতে পারেন। আপনার গুগল টক অ্যাকাউন্টে রোবো-টিটিও জিটকল অ্যাকাউন্ট যুক্ত করতে ভুলবেন না এবং অ্যাকাউন্টটি ব্যবহারের আগে একে অপরের সাথে চ্যাট করার মাধ্যমে এটি পরীক্ষা করুন।


5
আমি একটি আছে গুরুতর সঙ্গে "কোন খোলা, SSH পোর্ট (আপনার কম্পিউটারের রাখা প্রয়োজন সমস্যা সংরক্ষণ শেল ওভার Jabber বট যা আপনাকে উত্থাপন করা কোট, সঙ্গে সুরক্ষিত রাখা হয় -)" CLIENT_PASSPHRASE = "logmein", ইন প্লেইন । এটি আক্ষরিক শূন্য সুরক্ষা - আপনি যে কারও কাছে প্রবেশের জন্য একটি ট্রাক আকারের গর্ত তৈরি করছেন। এসএসএইচ পাবলিক কী প্রমাণীকরণের বিপরীতে: আমি একটি সুরক্ষিত চ্যানেলের মাধ্যমে প্রমাণীকরণ করছি , শংসাপত্রগুলি ব্যবহার করে যা কখনও কখনও তারের অতিক্রম করে না। কে এখন তাদের কম্পিউটার সুরক্ষিত রাখছে?
পিসকভর

@ পিসকোভর, রোবোটিটো কেবল শ্বেত তালিকাভুক্ত পরিচিতি থেকে কমান্ড চালাবে। github.com/formigarafa/robotito/blob/master/config/...
formigarafa

শ্বেতলিস্ট ভিত্তিক প্রমাণীকরণের কারণে আমি কোনও সমস্যায় পড়ি না। যদি আমি ভুল না হয়, জিটিल्कের সাথে ব্যবহার করার সময় বার্তা স্থানান্তর এনক্রিপ্ট করা হয়। এক উপায়ে বা অন্যভাবে, আমি সম্প্রতি এটি পরিবর্তন করেছি এবং এখন এটি Google প্রমাণীকরণকারীর মতো বা অ্যাক্সেসের অনুমতি দেওয়ার জন্য অনুরূপ কোনও সরঞ্জাম থেকে একটি ওয়ান টাইম পাসওয়ার্ড ব্যবহার করে।
ফর্মিগরাফা

1
@ ফার্মিগারাফা: (১) আপনি যদি এই পণ্যটির বিকাশে জড়িত বা জড়িত থাকেন তবে আপনাকে অবশ্যই এটি স্পষ্টভাবে বলতে হবে। একই নাম ব্যবহার করা যথেষ্ট নয়; বেশিরভাগ লোকেরা তা খেয়াল করবে না। (আপনি এটি আপনার প্রোফাইলে উল্লেখ করতে পারেন )) (২) আপনি যখন কোনও পোস্ট সম্পাদনা করেন, আপনার এটিকে যতটা সম্ভব ঠিক করা উচিত। উদাহরণস্বরূপ, "আইটিএস" এর মতো টাইপগুলি ধরার চেষ্টা করুন। এবং, যদি কোনও লিঙ্ক নীচে চলে যায়, তবে কেবল এটি একটি মৃত লিঙ্ক হিসাবে লেবেল করবেন না; পোস্টে নতুন ইউআরএল রাখুন । সঠিক তথ্য সন্ধানের জন্য লোকদের মন্তব্যগুলির মাধ্যমে খনন করা উচিত নয়।
জি-ম্যান

@ জি-ম্যান, মূল উত্তর এবং সম্পাদনা আমার ছিল না। এবং এটিকে আমার হিসাবে দেখানোর ইচ্ছা আমার কখনও ছিল না। উত্তরে আমি একটি মৃত লিঙ্ক লক্ষ্য করেছি, আমি লিঙ্কটিও তৈরি করিনি। আমি আসলে এটির বিষয়বস্তু দেখার আগ্রহী ছিলাম এবং এটি অনুসরণ করার চেষ্টা করেছি। দুর্ভাগ্যক্রমে আমি সংস্থানটি পাইনি। আমি এই আশায় একটি মৃত লিঙ্ক হিসাবে চিহ্নিত করেছি যে যে কেউ উত্তরটি লিখেছেন সে পরিবর্তনের মাধ্যমে অবহিত হবে এবং এটি সংশোধন করার চেষ্টা করবে।
ফর্মিগরাফা

3

পিসকভোরের সমাধান কাজ করে এবং দুর্দান্ত। তবে এটি লগইন শেলগুলি ঝুলিয়ে টার্মিনালগুলিকে ঝুলন্ত রাখে। খুব শীতল নয়।

আমি সর্বদা এই ছোট স্ক্রিপ্টটি কোনও সার্ভারের সাথে সংযোগ স্থাপন এবং ক্রোন চালিয়ে এটিকে সংযুক্ত রাখার জন্য লিখেছিলাম:

#!/bin/bash
TARGET_HOST=${1:-myserver.example.com}
TARGET_PORT=${2:-7777}
TUNNEL_PORT=${3:-22}
T_USER="odin"

#Check that we have an active connection to the remote system
ACTIVE_PROCESS=`ps -ef | \
    grep "ssh $TARGET_HOST -l $T_USER -R $TARGET_PORT:127.0.0.1:$TUNNEL_PORT" | \
    grep -v grep | \
    wc -l`
if [ $ACTIVE_PROCESS -lt 1 ]; then
    echo "`date` : establishing connection to $TARGET_HOST on port $TARGET_PORT"
    screen -m -d ssh $TARGET_HOST -l $T_USER -R $TARGET_PORT:127.0.0.1:$TUNNEL_PORT > /dev/null
fi

আমি বাজি ধরেছি যে আমরা পিসকভারের সমাধানটি আরও মার্জিত অটোশ ব্যবহার করে সম্ভবত একটি বিচ্ছিন্ন স্ক্রিন ব্যবহার করে ঠিক করতে পারব বা কেবল ব্যাকগ্রাউন্ডে সংযোগ রাখতে toNT ssh টি যুক্তি ব্যবহার করব।


অভিনন্দনের জন্য আপনাকে ধন্যবাদ :) আমার ব্যবহারের ক্ষেত্রে, আমার নিয়মিত শেল অ্যাক্সেসের পাশাপাশি ফরওয়ার্ডিংয়ের প্রয়োজন হয়; এছাড়াও, আমি এখানে সর্বনিম্ন কেসটি দেখানোর চেষ্টা করেছি (স্বচ্ছ এসএসএইচ হোস্টিং দিয়ে উপরের দুটি কমান্ডে সহজ করা সম্ভব, তবে এটির জন্য homepcকম্পিউটারে অতিরিক্ত কনফিগারেশন প্রয়োজন ) require
পিসকভোর

2

আমার কাছে এটা মনে, একটি, SSH টানেলের পরিবর্তে, আপনি একটি VPN চেষ্টা করা উচিত: ধরনের যে যেমন প্রক্সি মাধ্যমে বাহিরে, উপর একটি সার্ভার ব্যবহার করে কাজ করে Hamachi । এটির মতো আরও নিখরচায় সফ্টওয়্যার রয়েছে তবে হামাচি আমার পছন্দ।


1
এখন যেহেতু 5.0.0.0/8নেটওয়ার্কটিতে সর্বজনীন আইপিভি 4 ঠিকানা নির্ধারিত রয়েছে, হামাচি সমস্যায় পড়েছে (যদি হামাচি চলমান থাকে তবে আপনি ইন্টারনেটের কিছুটা এলোমেলো অংশ অ্যাক্সেস করতে পারবেন না)। এছাড়াও, হামাচি আর বিনামূল্যে ব্যবহারযোগ্য।
পিসকভোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.