একাধিক হুপের মাধ্যমে একটি এসএসএইচ টানেল


332

এসএসএইচ-এর মাধ্যমে টানেলিং ডেটাটি বেশ সোজা-এগিয়ে রয়েছে:

ssh -D9999 username@example.com

আপনার উপর localhostএকটি টানেল হিসাবে 9999 পোর্ট স্থাপন করে example.comতবে আমার আরও নির্দিষ্ট প্রয়োজন:

  • আমি স্থানীয়ভাবে কাজ করছি localhost
  • host1 প্রবেশযোগ্য localhost
  • host2 কেবলমাত্র থেকে সংযোগ গ্রহণ করে host1
  • আমি থেকে একটি সুড়ঙ্গপথ তৈরি করতে হবে localhostকরতেhost2

কার্যকরভাবে, আমি একটি "মাল্টি-হপ" এসএসএইচ টানেল তৈরি করতে চাই। কিভাবে আমি এটি করতে পারব? মূলত, আমি superuser হতে প্রয়োজন ছাড়া এই কাজ করতে চাই কোন মেশিনে।


2
আপনি এটি কি জন্য ব্যবহার করেছেন? আমি এটি মোজা প্রক্সি জন্য ব্যবহার করতে চাই। এটা কি কাজ করবে?
prongs

2
হ্যাঁ, আপনি অগ্রণীকরণ host2অস্বীকার না করে আপনি টানেলযুক্ত সংযোগটি SOCKS প্রক্সি হিসাবে ব্যবহার করতে সক্ষম হবেন
মালা

আমি এসএসএইচে একটি মোড়ক তৈরি করার কথা ভাবছিলাম যা প্রক্সিকমন্ডের একাধিক ব্যবহার করে সেট আপ করবে।
পাভেল Šিমেরদা

@ প্রপংসস আপনি কি এটি সোকেস প্রক্সি (এই সমস্ত বছর আগের) জন্য ব্যবহার করতে পেরেছেন?
ড্রাক্স

উত্তর:


324

আপনার মূলত তিনটি সম্ভাবনা রয়েছে:

  1. থেকে টানেল localhostথেকে host1:

    ssh -L 9999:host2:1234 -N host1
    

    হিসাবে উপরে উল্লেখ করেছি, থেকে সংযোগ host1করতে host2সুরক্ষিত করা হবে না।

  2. থেকে টানেল localhostথেকে host1থেকে host1থেকে host2:

    ssh -L 9999:localhost:9999 host1 ssh -L 9999:localhost:1234 -N host2
    

    এই থেকে একটি সুড়ঙ্গ খুলবে localhostকরতে host1এবং থেকে অন্য সুড়ঙ্গ host1থেকে host2। তবে বন্দরটি 9999যে host2:1234কেউ ব্যবহার করতে পারবেন host1। এটি সমস্যা হতে পারে বা নাও হতে পারে।

  3. থেকে টানেল localhostথেকে host1থেকে localhostথেকে host2:

    ssh -L 9998:host2:22 -N host1
    ssh -L 9999:localhost:1234 -N -p 9998 localhost
    

    এই থেকে একটি সুড়ঙ্গ খুলবে localhostকরতে host1, যার মাধ্যমে, SSH সেবা host2ব্যবহার করা যাবে। তারপর একটি দ্বিতীয় সুড়ঙ্গ থেকে খোলা হয় localhostথেকে host2প্রথম সুড়ঙ্গ মাধ্যমে।

সাধারণত, আমি বিকল্পটি 1 নিয়ে যাব If যদি থেকে সংযোগটি সুরক্ষিত host1করা host2দরকার হয় তবে বিকল্প 2 দিয়ে যান O বিকল্প 3 এর কোনও পরিষেবা অ্যাক্সেস করার জন্য মূলত কার্যকর host2যেটি কেবল host2নিজের থেকে পৌঁছতে পারে।


17
বিকল্প 3 আমি যা খুঁজছিলাম, ধন্যবাদ!
মালা

1
আমি এইভাবে ব্রাউজিং করতে চাই। কার সেরা? আমি প্রথম চেষ্টা করেছিলাম কিন্তু এটি কার্যকর হয়নি। আমি আমার ব্রাউজার লোকালহোস্টে মোজা প্রক্সি সেট করেছি: 1234 তবে ভাগ্য নেই। :( সাহায্য করুন ..
prongs

1
@ প্রোপাগুলি বিকল্পটি 3 ব্যবহার করে দেখুন
মালা

6
@ নলি আপনি যদি ssh-এজেন্ট ব্যবহার করেন (যা আপনার উচিত), আপনি এটি সংযোগের মাধ্যমে -Assh বিকল্পটি ব্যবহার করে ফরোয়ার্ড করতে পারেন ।
মিকা ফিশার

2
@ মিউসিকালি_ট - এটি সঠিক, ২ য় ssh কমান্ডটি হোস্ট 1 এ ব্যাকগ্রাউন্ড করা হয়েছে, সুতরাং আপনি যদি স্থানীয়ভাবে এটির সাথে পুনরায় সংযোগ স্থাপন করতে চান তবে আপনাকে কেবল প্রথম অংশটি আবার চালু করতে হবে। আপনি যদি যোগ করেন তবে -fতা অবিলম্বে স্থানীয়ভাবে পটভূমি হয়ে যাবে, ssh -f -L 9999:localhost:9999 host1আপনি প্রথম ক্ষেত্রে ctrl-c টিপলে পুনরায় সংযুক্ত হবে। অথবা -fপ্রথমে তাৎক্ষণিকভাবে ব্যাকগ্রাউন্ডে সমস্ত কিছু চালানোর সময় মূল ডাবল এসএসএস কমান্ডে যুক্ত করুন।
মার্ক ফিশার

153

এসএসএইচের জন্য কনফিগারেশন নির্দেশের ব্যবহারের ব্যাখ্যা দেওয়ারProxyCommand জন্য একটি দুর্দান্ত উত্তর রয়েছে :

এটি আপনার যুক্ত করুন ~/.ssh/config( man 5 ssh_configবিশদ জন্য দেখুন):

Host host2
  ProxyCommand ssh host1 -W %h:%p

তারপরে ssh host2স্বয়ংক্রিয়ভাবে সুড়ঙ্গ হবে host1(এক্স 11 ফরোয়ার্ডিং ইত্যাদির সাথেও কাজ করে)।

এটি হোস্টের সম্পূর্ণ শ্রেণীর জন্য যেমন ডোমেন দ্বারা চিহ্নিত:

Host *.mycompany.com
  ProxyCommand ssh gateway.mycompany.com -W %h:%p

হালনাগাদ

ওপেনএসএইচ 7.3ProxyJump প্রথম নির্দেশকে সহজ করে একটি নির্দেশিকা পরিচয় করিয়েছে

Host host2
  ProxyJump host1

3
শর্তসাপেক্ষে এটি করার কোনও উপায় আছে কি? আমি কেবল কখনও কখনও এটি করতে চাই। এছাড়াও, এটি বিশেষত কমান্ডগুলির জন্য, তবে আমি সমস্ত 22 পোর্টের জন্য কিছু খুঁজছি (ssh, sftp, ইত্যাদি)।
স্টিফেন

1
@ স্টাফেন কমান্ডগুলির জন্য বিশেষত আপনার অর্থ কী ? আপনার SSH কনফিগ ব্যবহার কিছু দ্বারা ব্যবহৃত হয় sshসহ, git, sftpইত্যাদি আমি যতদূর জানি।
কিনান

1
@ স্টাফেন আমি শর্তসাপেক্ষে এটি সক্ষম করার কোনও উপায় সম্পর্কে অবগত নই (উদাহরণস্বরূপ যখন আপনি লক্ষ্য হোস্টের নেটওয়ার্কের বাইরে থাকবেন)। আমি একটি কনফিগারেশন ব্লকে প্রশ্নে সমস্ত হোস্টের জন্য এই বিকল্পটি সেট করেছিলাম এবং তারপরে (আন) প্রয়োজনীয় হিসাবে লাইনে মন্তব্য করব। নিখুঁত নয়, তবে এটি কাজ করে।
কিনান

2
নিশ্চিত @Stephane: ssh -F /path/to/altconfig। সাবধান থাকুন এটি সিস্টেমকে প্রশস্ত করে দেবে /etc/ssh/ssh_config
কিনান

19
সেটিংসকে "শর্তসাপেক্ষ" করার সহজ উপায় হ'ল .ssh / কনফিগারেশনে দুটি পৃথক হোস্টকে সংজ্ঞায়িত করা, যা একই হোস্টনেম রয়েছে। আপনি যখন টানেলটি চান তখন হোস্ট 2-টানেলের সাথে এবং যখন আপনি চান না তখন হোস্ট 2 এর সাথে সংযুক্ত হন।
স্টিভ বেনেট

25

ওপেনএসএইচ ভি 7.3 এর পরে একটি -Jস্যুইচ এবং একটি ProxyJumpবিকল্প সমর্থন করে যা এক বা একাধিক কমা-বিচ্ছিন্ন লাফ হোস্টকে মঞ্জুরি দেয়, সুতরাং আপনি এখনই এটি করতে পারেন:

ssh -J jumpuser1@jumphost1,jumpuser2@jumphost2,...,jumpuserN@jumphostN user@host

ssh -J ইউজার 1 @ হোস্ট 1 -YC4c আরকফোর, ব্লোফিশ-সিবিসি ইউজার 2 @ হোস্ট 2 ফায়ারফক্স-নন-রিমোট এটি হোস্ট 2 থেকে লোকালহোস্টে ফায়ারফক্স পেতে গতি বাড়িয়ে তুলবে।
জাওর

21

আমাদের ব্যক্তিগত নেটওয়ার্কে আমাদের একটি ssh গেটওয়ে রয়েছে। যদি আমি বাইরে থাকি এবং ব্যক্তিগত নেটওয়ার্কের অভ্যন্তরে কোনও মেশিনে একটি রিমোট শেল চাই, আমাকে গেটওয়ে এবং সেখান থেকে প্রাইভেট মেশিনে প্রবেশ করতে হবে।

এই পদ্ধতিটি স্বয়ংক্রিয় করতে, আমি নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করি:

#!/bin/bash
ssh -f -L some_port:private_machine:22 user@gateway "sleep 10" && ssh -p some_port private_user@localhost

কি হচ্ছে:

  1. প্রাইভেট মেশিনে ssh প্রোটোকল (পোর্ট 22) এর জন্য একটি টানেল স্থাপন করুন।
  2. শুধুমাত্র এটি সফল হলে, টানেলটি ব্যবহার করে প্রাইভেট মেশিনে প্রবেশ করুন। (অ্যান্ড অ্যান্ড অপারেটর এটি নিশ্চিত করে)।
  3. বেসরকারী ssh অধিবেশন বন্ধ করার পরে, আমি ssh টানেলটিও বন্ধ হওয়া চাই। এটি "ঘুম 10" কৌশলটির মাধ্যমে করা হয়। সাধারণত, প্রথম ssh কমান্ডটি 10 ​​সেকেন্ড পরে বন্ধ হবে, কিন্তু এই সময়ের মধ্যে, দ্বিতীয় ssh কমান্ডটি টানেলটি ব্যবহার করে একটি সংযোগ স্থাপন করবে। ফলস্বরূপ, নিম্নলিখিত দুটি কন্ডিশন সন্তুষ্ট না হওয়া পর্যন্ত প্রথম ssh কমান্ডটি টানেলটি উন্মুক্ত রাখে: ঘুম 10 শেষ হয় এবং টানেলটি আর ব্যবহার করা হয় না।

1
খুব চালাক!!! এটি প্রেম!
হেন্ডি ইরওয়ান

18

উপরেরটি পড়ার পরে এবং সবকিছু একসাথে আঠালো করার পরে, আমি নিম্নলিখিত পার্ল স্ক্রিপ্টটি তৈরি করেছি (এটিকে / usr / bin তে mssh হিসাবে সংরক্ষণ করুন এবং এটি সম্পাদনযোগ্য করে তুলুন):

#!/usr/bin/perl

$iport = 13021;
$first = 1;

foreach (@ARGV) {
  if (/^-/) {
    $args .= " $_";
  }
  elsif (/^((.+)@)?([^:]+):?(\d+)?$/) {
    $user = $1;
    $host = $3;
    $port = $4 || 22;
    if ($first) {
      $cmd = "ssh ${user}${host} -p $port -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
      $args = '';
      $first = 0;
    }
    else {
      $cmd .= " -L $iport:$host:$port";
      push @cmds, "$cmd -f sleep 10 $args";
      $cmd = "ssh ${user}localhost -p $iport -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
      $args = '';
      $iport ++;
    }
  }
}
push @cmds, "$cmd $args";

foreach (@cmds) {
  print "$_\n";
  system($_);
}

ব্যবহার:

HOSTA এবং HOSTB (একই ব্যবহারকারী) এর মাধ্যমে HOSTC অ্যাক্সেস করতে:

mssh HOSTA HOSTB HOSTC

HOSTA এবং HOSTB এর মাধ্যমে HOSTC অ্যাক্সেস করতে এবং অ-ডিফল্ট এসএসএইচ-পোর্টনাম্বার এবং বিভিন্ন ব্যবহারকারী ব্যবহার করুন:

mssh user1@HOSTA:1234 user2@HOSTB:1222 user3@HOSTC:78231

HOSTA এবং HOSTB এর মাধ্যমে HOSTC অ্যাক্সেস করতে এবং এক্স-ফরোয়ার্ডিং ব্যবহার করুন:

mssh HOSTA HOSTB HOSTC -X

HOSTA এবং HOSTB এর মাধ্যমে HOSTC এর 8080 বন্দরটি অ্যাক্সেস করতে:

mssh HOSTA HOSTB -L8080:HOSTC:8080

1
এটি দুর্দান্ত
মালা

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

এটি সত্যিই ভাল কাজ করে। আরও উন্নতি হ'ল লোকালহোস্টের / ইত্যাদি / হোস্ট এবং ~ / .ssh / config ব্যবহার করে HOSTB, HOSTC ইত্যাদি সমাধান করা
স্টিভ বেনেট

এছাড়াও আমি মালার মন্তব্য দ্বিতীয়। এলোমেলো বন্দর ব্যতীত, আপনি যদি চেষ্টা করেন তবে mssh HOSTA HOSTDআপনি আসলে HOSTB এ পৌঁছে যাবেন (এবং সম্ভবত বুঝতে পারবেন না)
স্টিভ বেনেট

8

এই উত্তরটি কিনানের সমান, কারণ এটিতে প্রক্সিকম্যান্ড ব্যবহার জড়িত। তবে আইএমও ব্যবহার করা আরও সুবিধাজনক।

আপনার হপ মেশিনে নেটকাট ইনস্টল করা থাকলে আপনি এই this / .ssh / কনফিগারেশনে এই স্নিপেট যুক্ত করতে পারেন:

Host *+*
    ProxyCommand ssh $(echo %h | sed 's/+[^+]*$//;s/\([^+%%]*\)%%\([^+]*\)$/\2 -l \1/;s/:/ -p /') nc $(echo %h | sed 's/^.*+//;/:/!s/$/ %p/;s/:/ /')

তারপর

ssh -D9999 host1+host2 -l username

আপনি যা চেয়েছিলেন তা করবে।

আমি এখানে আসল জায়গাটি খুঁজেছি যেখানে আমি এই কৌশলটি পড়েছি। আমি যখন একটি লিঙ্ক খুঁজে পাব পোস্ট করব।


2
আমার বিশ্বাস এই কৌতুক ভব হল: wiki.gentoo.org/wiki/SSH_jump_host
SLM

5

আমি যা করেছি মনে আপনার সাথে করতে চেয়েছিলেন

ssh -D 9999 -J host1 host2

আমাকে উভয় পাসওয়ার্ডের জন্য অনুরোধ জানানো হয়েছে, তারপরে আমি লোকালহোস্ট ব্যবহার করতে পারি: হোস্ট 2 এ সোকস প্রক্সির জন্য 9999 ব্যবহার করতে পারি। আপনি প্রথম স্থানটিতে যে উদাহরণটি দেখিয়েছেন তা আমি এটি সবচেয়ে কাছের ভাবতে পারি।


এটি নিখুঁতভাবে কাজ করেছে!
আর্থার সিলভা

4
ssh -L 9999:host2:80 -R 9999:localhost:9999 host1

-ল 9999: হোস্ট 2: 80

মানে লোকালহোস্টের সাথে আবদ্ধ: 9999 এবং যে কোনও প্যাকেট লোকালহোস্টে প্রেরণ করা হয়েছে: 9999 এটিকে হোস্ট 2: 80 এ ফরোয়ার্ড করুন

-আর 9999: লোকালহোস্ট: 9999

হোস্ট 1 দ্বারা প্রাপ্ত যে কোনও প্যাকেট মানে: 9999 এটিকে লোকালহোস্টে ফেরত দিন: 9999


একটি টানেল তৈরির উজ্জ্বল, সবচেয়ে সহজ উত্তর যাতে আপনি লোকালহোস্ট থেকে সরাসরি হোস্ট 2 এ অ্যাপ্লিকেশনটি অ্যাক্সেস করতে পারেন: 9999
ডিভিটোয়ার

এই উত্তর অনুসরণ করে, আমি একটি channel 3: open failed: administratively prohibited: open failed ত্রুটি বার্তা পেয়েছি ।
ফ্রাঙ্ক ডারননকোর্ট

2

আপনার host2থেকে কোনও পরিষেবা অ্যাক্সেস করতে পোর্ট ফরওয়ার্ডিং ব্যবহার করতে সক্ষম হওয়া উচিত localhost। একটি ভাল গাইড এখানে অবস্থিত । উদ্ধৃতাংশ:

দুটি ধরণের পোর্ট ফরওয়ার্ডিং রয়েছে: স্থানীয় এবং দূরবর্তী ফরওয়ার্ডিং। এগুলিকে যথাক্রমে বহির্মুখী এবং আগত টানেলও বলা হয়। স্থানীয় পোর্ট ফরওয়ার্ডিং একটি নির্দিষ্ট দূরবর্তী বন্দরে লোকাল বন্দরে ট্র্যাফিক আগমন করে।

উদাহরণস্বরূপ, আপনি যদি আদেশটি ইস্যু করেন

ssh2 -L 1234:localhost:23 username@host

ক্লায়েন্টে 1234 পোর্টে আসা সমস্ত ট্র্যাফিক সার্ভারের (হোস্ট) 23 পোর্টে ফরোয়ার্ড করা হবে। দ্রষ্টব্য যে সংযোগ স্থাপনের পরে লোকালহোস্টটি এসএসডিএসভার দ্বারা সমাধান করা হবে। এই ক্ষেত্রে লোকালহোস্ট তাই সার্ভারকে (হোস্ট) নিজেই বোঝায়।

রিমোট পোর্ট ফরওয়ার্ডিং এর বিপরীতে কাজ করে: এটি দূরবর্তী বন্দরে আগত ট্র্যাফিককে একটি নির্দিষ্ট স্থানীয় বন্দরে ফরওয়ার্ড করে।

উদাহরণস্বরূপ, আপনি যদি আদেশটি ইস্যু করেন

ssh2 -R 1234:localhost:23 username@host

সার্ভারে (হোস্ট) 1234 পোর্টে আসা সমস্ত ট্র্যাফিক ক্লায়েন্টের (লোকালহোস্ট) 23 পোর্টে ফরোয়ার্ড করা হবে।

আপনার কাস্টে, localhostসাথে host2এবং hostসাথে উদাহরণটিতে প্রতিস্থাপন করুন host1


এই নিবন্ধ অনুসারে, সংযোগটি কেবলমাত্র মাঝারি মেশিন (হোস্ট 1) পর্যন্ত সুরক্ষিত থাকবে। পুরো জিনিসটি সুরক্ষিত থাকে কি না তা নিশ্চিত করার কোনও উপায় আছে?
মালা

আমি এটি কখনও চেষ্টা করে দেখিনি, তবে হোস্ট 1 এবং হোস্ট 2 উভয়ই এসএসএস সার্ভার হলে আপনি হোস্ট 1 থেকে হোস্ট 2 তে একটি সুড়ঙ্গ স্থাপন করতে সক্ষম হবেন, তারপরে একই পরিষেবাটির জন্য লোকালহোস্ট থেকে হোস্ট 1 এ একটি টানেল সেট আপ করতে সক্ষম হবেন (আপনার স্থানীয় এবং দূরবর্তী প্রাপ্ত পোর্ট ডান)। আমি জানি না লোকালহোস্টের একটি কমান্ডে এটি সম্ভব কিনা।
ফিদেলি

1

এই উত্তরে আমি একটি দৃ concrete় উদাহরণ দিয়ে যাব। আপনাকে কেবল কম্পিউটারের হোস্ট-নেম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড নিজের দ্বারা প্রতিস্থাপন করতে হবে।

সমস্যা বিবৃতি

ধরে নেওয়া যাক আমাদের নিম্নলিখিত নেটওয়ার্ক টপোলজি রয়েছে:

our local computer <---> server 1 <---> server 2

সংক্ষিপ্ততার জন্য, ধরে নেওয়া যাক আমাদের কাছে নিম্নলিখিত কম্পিউটারগুলির হোস্ট-নেম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড রয়েছে:

LocalPC            <--->  hostname: mit.edu         <---> hec.edu
                          username: bob                   username: john 
                          password: dylan123              password: doe456

গোল: আমরা SOCKS প্রক্সি যে পোর্টে শোনে সেট আপ করতে চান 9991এর LocalPCযাতে প্রতিটি সময় সংযোগ LocalPCসূচনা হয় বন্দর থেকে 9991এটি মাধ্যমে যায় mit.eduতারপর hec.edu

ব্যবহারের ক্ষেত্রে: hec.eduএকটি HTTP সার্ভার রয়েছে যা সুরক্ষার কারণে শুধুমাত্র http://127.0.0.1:8001 এ অ্যাক্সেসযোগ্য । আমরা ওয়েব ব্রাউজারটি চালু করে http://127.0.0.1:8001 এ যেতে সক্ষম হতে চাই LocalPC


কনফিগারেশন

ইন LocalPC, এ যুক্ত করুন ~/.ssh/config:

Host HEC
    HostName hec.edu
    User john
    ProxyCommand ssh bob@mit.edu -W %h:%p

তারপরে টার্মিনালে LocalPC, চালান:

ssh -D9991 HEC

এটি আপনাকে bobঅন mit.edu(যেমন dylan123) এর পাসওয়ার্ড জিজ্ঞাসা করবে, তারপরে এটি আপনাকে johnঅন hec.edu(যেমন doe456) এর পাসওয়ার্ড জিজ্ঞাসা করবে ।

এই মুহুর্তে, SOCKS প্রক্সি এখন বন্দর চলছে 9991এর LocalPC

উদাহরণস্বরূপ, আপনি যদি LocalPCSOCKS প্রক্সি ব্যবহার করে কোনও ওয়েবপৃষ্ঠাটি দেখতে চান তবে আপনি ফায়ারফক্সে এটি করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

কিছু মন্তব্য:

  • ইন ~/.ssh/config, HECসংযোগের নাম: আপনি এটি যে কোনও কিছুতে এটি পরিবর্তন করতে পারেন।
  • -D9991বলে sshপোর্টে একটি SOCKS4 প্রক্সি সেট আপ করার জন্য 9991

0

যদি আপনি উভয় মেশিনে এসএসএইচ করতে পারেন তবে ssh এর প্রক্সিকম্যান্ডের নির্দেশিকা দেখুন। এটি আপনাকে লোকালহোস্ট থেকে সরাসরি হোস্ট 2 এ যেতে দেবে (যদি আপনি পাবলিক কী ব্যবহার করেন তবে একটি সহজ কমান্ডে)। তারপরে আপনি হোস্ট 2 দিয়ে যা খুশি করতে পারেন।

http://www.statusq.org/archives/2008/07/03/1916/


0

সেরা উত্তরের 2 বিকল্পটি বর্তমান এক ওরফে: ব্যবহারকারী @ হোস্টের চেয়ে বিভিন্ন এসএস ব্যবহারকারীদের সাথে ব্যবহার করা যেতে পারে

    export local_host_port=30000
    export host1_user=xyz
    export host1=mac-host
    export host1_port=30000
    export host2=192.168.56.115
    export host2_user=ysg
    export host2_port=13306

    # Tunnel from localhost to host1 and from host1 to host2
    # you could chain those as well to host3 ... hostn
    ssh -tt -L $local_host_port:localhost:$host1_port $host1_user@$host1 \
    ssh -tt -L $host1_port:localhost:$host2_port $host2_user@$host2

0

আমার ক্ষেত্রে আমি করেছি

localhost$ ssh -D 9999 host1
host1$ ssh -L 8890:localhost:8890 host2

host2:8890একটি বৃহত্তর নোটবুক যেখানে চলছে।

তারপরে আমি ফায়ারফক্সকে localhost:9999সোসকে হোস্ট হিসাবে ব্যবহার করার জন্য কনফিগার করেছি ।

সুতরাং এখন আমি আমার মেশিনে host2ফায়ারফক্সের অ্যাক্সেসযোগ্য নোটবুকটি পেয়েছি localhost:8890


0

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

প্রসঙ্গটি যদিও উপরের উত্তরগুলির সাথে সত্যই সমান: আমি সরাসরি প্রোডাকশন সার্ভারে প্রবেশ করতে পারি না, এবং একটি জাম্প সার্ভার ব্যবহার করে 1 হপ করতে হবে।

তবুও আরেকটি সমাধান - একটি নির্বোধ

আমি এটি খুব নিষ্প্রভ উপায়ে শেষ করেছি: আমার ল্যাপটপে সমস্ত কমান্ড চালানোর চেষ্টা করার পরিবর্তে, আমি প্রতিটি মেশিনে কমান্ডগুলি চালিয়েছি , নীচের মত:

  1. আপনার জাম্প সার্ভারে এসএসএইচ করুন, তারপরে চালান ssh -v -L 6969:localhost:2222 -N your-protected.dest.server। যদি কোনও পাসওয়ার্ড ইনপুট নিয়ে আপনাকে অনুরোধ জানানো হয় তবে এটি টাইপ করুন।
  2. এখন আপনার ল্যাপটপে, চালান ssh -v -L 6969:localhost:6969 -N your-jump-server.host.name। এটি আপনার ল্যাপটপে 6969 পোর্টে আপনার যে কোনও অনুরোধ জাম্প সার্ভারে ফরোয়ার্ড করবে। তারপরে, আমরা যেহেতু আমাদের পূর্ববর্তী ধাপে কনফিগার করেছি, জাম্প সার্ভারটি আবার সুরক্ষিত গন্তব্য সার্ভারে 6922 পোর্টের জন্য 2222 পোর্টের অনুরোধগুলি ফরোয়ার্ড করবে।

কিছু বার্তা প্রিন্ট করার পরে আপনার "হ্যাঙ্গস" কমান্ডটি দেখতে হবে - এর অর্থ তারা কাজ করছে! একটি ব্যতিক্রম - আপনি যদি ত্রুটি বার্তা দেখতে না পান Could not request local forwarding.তবে আপনি যদি এটি দেখতে পান তবে এটি এখনও কাজ করছে না :( আপনি এখন আপনার ল্যাপটপ থেকে 6969 পোর্টে অনুরোধটি সরিয়ে দেওয়ার চেষ্টা করতে পারেন, এবং এটি কাজ করছে কিনা তা দেখুন।

আশা করি আপনি যদি এমন কেউ হন যারা উপরের সমস্ত পদ্ধতিতে ব্যর্থ হন, সম্ভবত আপনি এটি চেষ্টা করতে পারেন।

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