බහුවිධ හොප් හරහා එස්එස්එච් උමගක්


374

එස්එස්එච් හරහා දත්ත උමං මාර්ගයක් කෙළින්ම ඉදිරියට ය:

ssh -D9999 username@example.com

9999 වරාය ඔබේ localhostඋමගක් ලෙස සකසයි example.com, නමුත් මට වඩාත් නිශ්චිත අවශ්‍යතාවයක් ඇත:

  • මම දේශීයව වැඩ කරනවා localhost
  • host1 වෙත ප්‍රවේශ විය හැකිය localhost
  • host2 වෙතින් සම්බන්ධතා පමණක් පිළිගනී host1
  • මම සිට උමගක් නිර්මාණය කිරීමට අවශ්ය localhostකිරීමටhost2

Multi ලදායී ලෙස, මට "බහු-හොප්" SSH උමගක් නිර්මාණය කිරීමට අවශ්යය. මට මෙය කළ හැක්කේ කෙසේද? ඉතා මැනවින්, මම කැමතියි ඕනෑම යන්ත්‍රයක සුපිරි පරිශීලකයෙකු නොවී මෙය කිරීමට .


2
ඔබ එය භාවිතා කළේ කුමක් සඳහාද? මට එය මේස් ප්‍රොක්සි සඳහා භාවිතා කිරීමට අවශ්‍යයි. එය ක්‍රියාත්මක වේද?
prongs

2
ඔව්, host2ඉදිරියට යැවීම ප්‍රතික්ෂේප නොකරන්නේ නම් ඔබට උමං සම්බන්ධතාවය SOCKS ප්‍රොක්සියක් ලෙස භාවිතා කළ හැකිය
Mala

මම කල්පනා කරමින් සිටියේ එස්එස්එච් හරහා එතීම නිර්මාණය කිරීම සඳහා වන අතර එය ප්‍රොක්සි කමාන්ඩ් හි බහු භාවිතයන් භාවිතා කරයි.
පාවෙල් ඉමර්ඩා

rongsrongs ඔබ මෙය SOCKS ප්‍රොක්සි සඳහා භාවිතා කිරීමට සමත් වී තිබේද (මීට වසර ගණනාවකට පෙර)?
ඩ්‍රක්ස්

Answers:


354

ඔබට මූලික වශයෙන් හැකියාවන් තුනක් ඇත:

  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 සමඟ යන්නෙමි. සිට සම්බන්ධතාවය සුරක්ෂිත කර host1ගැනීමට host2අවශ්‍ය නම්, 2 වන විකල්පය සමඟ යන්න. විකල්ප 3 ප්‍රධාන වශයෙන් ප්‍රයෝජනවත් වන්නේ එම සේවාවට ප්‍රවේශ වීම සඳහා host2පමණි host2.


17
3 වන විකල්පය මම සොයන දෙයයි, ස්තූතියි!
මාලා

1
මට මේ ආකාරයෙන් ගවේෂණය කිරීමට අවශ්‍යයි. හොඳම දේ කුමක්ද? මම පළමුව උත්සාහ කළ නමුත් එය සාර්ථක වූයේ නැත. මම මගේ බ්‍රව්සරයේ දේශීය හොස්ට්හි මේස් ප්‍රොක්සියක් තැබුවෙමි: 1234 නමුත් වාසනාව නැත. :( කරුණාකර උදව් කරන්න ..
prongs

1
rongs උත්සාහ කරන්න විකල්ප 3
මාලා

6
Ol නෝලි ඔබ ssh-agent භාවිතා කරන්නේ නම් (ඔබට එය කළ යුතුය), ඔබට -Assh විකල්පය භාවිතා කරමින් සම්බන්ධතා හරහා එය යොමු කළ හැකිය .
මිකා ෆිෂර්

2
usmusically_ut - එය නිවැරදිය, 2 වන ssh විධානය සත්කාරක 1 හි පසුබිම් කර ඇත, එබැවින් ඔබට එය දේශීයව නැවත සම්බන්ධ කිරීමට අවශ්‍ය නම්, ඔබට අවශ්‍ය වන්නේ පළමු කොටස නැවත ක්‍රියාත්මක කිරීම පමණි. ඔබ එකතු කළහොත් -f, එය වහාම දේශීයව පසුබිම් වනු ඇත, එබැවින් ssh -f -L 9999:localhost:9999 host1ඔබ පළමු අවස්ථාවේ දී ctrl-c එබුවහොත් නැවත සම්බන්ධ වේ. නැතහොත් -fසියල්ල වහාම පසුබිමට ගෙන යන විට මුල් ද්විත්ව ssh විධානයට එක් කරන්න .
මාර්ක් ෆිෂර්

162

SSH සඳහා වින්‍යාස කිරීමේ විධානය භාවිතා කිරීම පැහැදිලිProxyCommand කරන විශිෂ්ට පිළිතුරක් ඇත :

මෙය ඔබගේ ~/.ssh/config(විස්තර man 5 ssh_configසඳහා බලන්න) එක් කරන්න:

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

එවිට ssh host2ස්වයංක්‍රීයව උමං මාර්ගයක් host1(X11 ඉදිරියට යැවීම ආදිය සමඟද ක්‍රියා කරයි).

වසම මගින් හදුනාගත් සත්කාරක කාණ්ඩයක් සඳහාද මෙය ක්‍රියා කරයි:

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

යාවත්කාලීන කරන්න

OpenSSH 7.3 හඳුන්වාදෙයි වූ ProxyJumpඋපදෙස්, පළමු උදාහරණය සරල

Host host2
  ProxyJump host1

3
මෙය කොන්දේසි සහිතව කිරීමට ක්‍රමයක් තිබේද? මට මෙය කිරීමට අවශ්‍ය වන්නේ සමහර විට පමණි. එසේම, මෙය විශේෂයෙන් විධාන සඳහා වේ, නමුත් මම සියලු වරාය 22 (ssh, sftp, ආදිය) සඳහා යමක් සොයමි.
ස්ටෙෆාන්

1
St ස්ටෙෆේන් විධාන සඳහා ඔබ විශේෂයෙන් අදහස් කරන්නේ කුමක්ද? ඔබේ SSH config භාවිතා කිසිවක් විසින් භාවිතා කරනු ලබයි sshඇතුළු git, sftpආදිය afaik.
kynan

1
St ස්ටෙෆේන් මෙය කොන්දේසි සහිතව සක්‍රීය කිරීමේ ක්‍රමයක් ගැන මම නොදනිමි (උදා: ඔබ ඉලක්කගත ධාරකයේ ජාලයෙන් පිටත සිටින විට පමණි). සැකසුම් කොටසක ඇති සියලුම සත්කාරක සමාගම් සඳහා මම මෙම විකල්පය සකසා පසුව අවශ්‍ය පරිදි රේඛාව අදහස් දක්වන්න. පරිපූර්ණ නොවේ, නමුත් එය ක්රියා කරයි.
kynan

2
Ste ස්ටෙෆේන් විශ්වාසයි : ssh -F /path/to/altconfig. මෙය පද්ධතිය පුළුල් ලෙස නොසලකා හරිනු ඇත /etc/ssh/ssh_config.
kynan

19
සැකසුම් "කොන්දේසි සහිත" කිරීමට පහසු ක්‍රමයක් නම් .ssh / config හි එකම ධාරක නාමයක් ඇති විවිධ ධාරක දෙකක් අර්ථ දැක්වීමයි. ඔබට උමග අවශ්‍ය විට ධාරක 2-උමග හා සම්බන්ධ නොවන්න.
ස්ටීව් බෙනට්

42

OpenSSH v7.3 ඉදිරියට -Jස්විචයක් සහ ProxyJumpවිකල්පයක් සඳහා සහය දක්වයි , එමඟින් කොමාවෙන් වෙන් වූ ජම්පර් ධාරකයන් එකක් හෝ වැඩි ගණනක් ඉඩ දෙයි, එබැවින් ඔබට දැන් මෙය කළ හැකිය:

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

ssh -J user1 @ host1 -YC4c arcfour, blowfish-cbc user2 @ host2 firefox -no-remote මෙය ධාරක 2 සිට localhost වෙත ෆයර්ෆොක්ස් ලබා ගැනීම වේගවත් කරයි.
ජාවර්

මම දැනගෙන හිටියේ නැහැ ඔයාට මේ වගේ දෙයක් කරන්න පුළුවන් කියලා. බෙදාගැනීම ගැන ස්තූතියි!
ස්ටීවන් ක්වාන්

20

අපගේ පුද්ගලික ජාලයට එක් 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 විධානය මඟින් උමග භාවිතා කරමින් සම්බන්ධතාවයක් ඇති කර ගනු ඇත. මෙහි ප්‍රති As ලයක් වශයෙන්, පළමු 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 වෙත පිවිසීමට සහ පෙරනිමි නොවන SSH-portnumbers සහ විවිධ පරිශීලකයින් භාවිතා කිරීමට:

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

HOSTA සහ HOSTB හරහා HOSTC වෙත පිවිසීමට සහ X-forwarding භාවිතා කිරීමට:

mssh HOSTA HOSTB HOSTC -X

HOSTA සහ HOSTB හරහා HOSTC හි 8080 වරායට පිවිසීමට:

mssh HOSTA HOSTB -L8080:HOSTC:8080

1
මෙය නියමයි
මාලා

1
මට ඔබට ප්‍රමාණවත් තරම් ස්තූති කළ නොහැකිය, මෙම පිටපත දිනපතාම මගේ ජීවිතය පහසු කරයි. මා වෙනස් කළ එකම දෙය නම් iport වෙත int (rand (1000)) එකතු කිරීම, එකවර අවස්ථා කිහිපයක් ක්‍රියාත්මක වීමට ඉඩ දීමයි. මම අනිවාර්යයෙන්ම ඔබට බියර් ණයයි.
මාලා

මෙය ඉතා හොඳින් ක්‍රියාත්මක වේ. තවත් වැඩිදියුණු කිරීමක් වනුයේ HOSTB, HOSTC යනාදිය localhost's / etc / host සහ ~ / .ssh / config භාවිතා කර විසඳීමයි
ස්ටීව් බෙනට්

මම දෙවන මාලාගේ ප්‍රකාශය ද කරමි. අහඹු ලෙස වරාය නොමැතිව, ඔබ උත්සාහ කළහොත් ඔබ mssh HOSTA HOSTDසැබවින්ම HOSTB හි අවසන් වනු ඇත (සමහර විට එය තේරුම් නොගනු ඇත ..)
ස්ටීව් බෙනට්

8

මෙම පිළිතුර කයිනන්ට සමාන ය, එයට ප්‍රොක්සි කමාන්ඩ් භාවිතය සම්බන්ධ වේ. නමුත් IMO භාවිතා කිරීම වඩාත් පහසුය.

ඔබේ හොප් යන්ත්‍රවල නෙට්කැට් ස්ථාපනය කර ඇත්නම් ඔබට මෙම ස්නිපටය ඔබගේ ~ / .ssh / config වෙත එක් කළ හැකිය:

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

6

මම ඔබට කළ යුතු යැයි මා සිතන දේ කළා

ssh -D 9999 -J host1 host2

මුරපද දෙකම සඳහා මාගෙන් විමසනු ඇත, එවිට මට localhost: 9999 භාවිතා කළ හැකිය SOCKS ප්‍රොක්සියක් සඳහා සත්කාරක 2 සඳහා. ඔබ මුලින් පෙන්වූ ආදර්ශය ගැන මට සිතිය හැකි ආසන්නතම ස්ථානය එයයි.


මෙය පරිපූර්ණව ක්‍රියාත්මක විය!
ආතර් සිල්වා

සත්කාරකයන් තිදෙනෙකු සඳහා වැඩ කළේ නැත
ව්ලැඩිමීර් ඉෂින්

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

-L 9999: ධාරක 2: 80

Localhost: 9999 හා localhost වෙත යවන ඕනෑම පැකට්ටුවක්: 9999 එය සත්කාරක 2: 80 වෙත යොමු කරන්න

-R 9999: localhost: 9999

ධාරක 1: 9999 වෙතින් ලැබෙන ඕනෑම පැකට්ටුවක් එය නැවත දේශීය හොස්ට්: 9999 වෙත යොමු කරයි


උමගක් සෑදීම සඳහා දීප්තිමත්, ඉතා සරල පිළිතුරක් වන බැවින් ඔබට දේශීය හොස්ට් වෙතින් කෙලින්ම සත්කාරක 2 වෙත පිවිසිය හැකිය: 9999
dvtoever

මෙම පිළිතුර අනුගමනය කිරීමෙන් මට channel 3: open failed: administratively prohibited: open failed දෝෂ පණිවිඩයක් ලැබේ.
ෆ්‍රෑන්ක් ඩර්නන්කෝට්

3

මගේ පිළිතුර ඇත්ත වශයෙන්ම මෙහි ඇති අනෙක් සියලුම පිළිතුරු වලට සමාන ය, නමුත්, මට අවශ්‍ය වූයේ ~/.ssh/configප්‍රොක්සි ජම්ප් හි ප්‍රයෝජනය පැහැදිලි කිරීමට ය .

මට හොප් 3 කින් ගමනාන්තයක් කරා යා යුතු යැයි කියමු, සෑම හොප් සඳහාම මට නිශ්චිත පරිශීලක නාමයක්, සත්කාරක, වරාය සහ අනන්‍යතාවය අවශ්‍ය විය. අනන්‍යතා නිර්ණායක නිසා මෙය කළ හැක්කේ ~/.ssh/configවින්‍යාස ගොනුව සමඟ පමණි :

Host hop1
    User user1
    HostName host1
    Port 22
    IdentityFile ~/.ssh/pem/identity1.pem

Host hop2
    User user2
    HostName host2
    Port 22
    IdentityFile ~/.ssh/pem/identity2.pem
    ProxyJump hop1

Host hop3
    User user3
    HostName host3
    Port 22
    IdentityFile ~/.ssh/pem/identity3.pem
    ProxyJump hop2

ඔබේ පරිගණකයෙන්, ඔබට එක් එක් පැනීම තනි තනිව පරීක්ෂා කළ හැකිය, එනම්

[yourpc] $ ssh hop1 # will go from your PC to host1 in a single step
[host1] $ exit
[yourpc] $ ssh hop2 # will go from your PC to host2 via host1 (i.e. two steps)
[host2] $ exit
[yourpc] $ ssh hop3 # will go from your PC to host3 via host1 and host2 (i.e. three steps)
[host3] $ exit
[yourpc] $ 

~/.ssh/configගොනුවේ ඇති තවත් සිසිල් දෙයක් නම්, මෙය sftpඕනෑම හොප් මාලාවක් හරහා ගොනු මාරු කිරීමට ද ඉඩ සලසයි , උදා

[yourpc] $ sftp hop1 # for file transfers between your PC and host1
Connected to hop1.
sftp> quit
[yourpc] $ sftp hop2 # for file transfers between your PC and host2
Connected to hop2.
sftp> quit
[yourpc] $ sftp hop3 # for file transfers between your PC and host3
Connected to hop3.
sftp> quit

2

host2සිට සේවාවක් වෙත ප්‍රවේශ වීම සඳහා ඔබට වරාය ඉදිරියට යැවීම භාවිතා කළ හැකිය localhost. හොඳ මාර්ගෝපදේශයක් මෙහි පිහිටා ඇත . උපුටා ගැනීම:

වරාය ඉදිරියට යැවීම වර්ග දෙකක් තිබේ: දේශීය සහ දුරස්ථ ඉදිරියට යැවීම. ඒවා පිළිවෙලින් පිටතට යන සහ පැමිණෙන උමං ලෙසද හැඳින්වේ. දේශීය වරාය ඉදිරියට යැවීම දේශීය වරායකට පැමිණෙන ගමනාගමනය නිශ්චිත දුරස්ථ වරායකට යොමු කරයි.

උදාහරණයක් ලෙස, ඔබ විධානය නිකුත් කරන්නේ නම්

ssh2 -L 1234:localhost:23 username@host

සේවාදායකයාගේ වරාය 1234 වෙත පැමිණෙන සියලුම ගමනාගමනය සේවාදායකයේ (ධාරකයේ) 23 වන වරාය වෙත යොමු කෙරේ. සම්බන්ධතාවය ස්ථාපිත කිරීමෙන් පසු දේශීය හොස්ට් sshdserver විසින් විසඳනු ඇති බව සලකන්න. මෙම අවස්ථාවේදී localhost යනු සේවාදායකයට (ධාරකයට) යොමු දක්වයි.

දුරස්ථ වරාය ඉදිරියට යැවීම ප්‍රතිවිරුද්ධ දෙය කරයි: එය දුරස්ථ වරායකට පැමිණෙන ගමනාගමනය නිශ්චිත දේශීය වරායකට යොමු කරයි.

උදාහරණයක් ලෙස, ඔබ විධානය නිකුත් කරන්නේ නම්

ssh2 -R 1234:localhost:23 username@host

සේවාදායකයේ (ධාරක) 1234 වරායට පැමිණෙන සියලුම ගමනාගමනය සේවාදායකයා (localhost) හි 23 වන වරාය වෙත යොමු කරනු ලැබේ.

ඔබගේ කාස්ට් දී වෙනුවට localhostසමග උදාහරණය host2හා hostසමග host1.


එම ලිපියට අනුව, සම්බන්ධතාවය සුරක්ෂිත වන්නේ මැද යන්ත්‍රය (සත්කාරක 1) තෙක් පමණි. මුළු දෙයක්ම ආරක්ෂිතව පවතින බවට සහතික කර ගැනීමට ක්‍රමයක් තිබේද?
මාලා

මම කවදාවත් මෙය උත්සාහ කර නැත, නමුත් host1 සහ host2 යන දෙකම ssh සේවාදායකයන් නම්, ඔබට ධාරක 1 සිට ධාරක 2 දක්වා උමගක් සැකසීමට හැකි වනු ඇත, ඉන්පසු එකම සේවාවක් සඳහා localhost සිට host1 දක්වා උමගක් සකසන්න (ඔබේ දේශීය සහ දුරස්ථ ලබා ගැනීම වරාය හරි). Localhost වෙතින් එක් විධානයකින් එය කළ හැකිදැයි මම නොදනිමි.
ෆිදෙලි

2

මෙම පිළිතුරෙන් මම ස්ථිර උදාහරණයක් හරහා යන්නෙමි. ඔබට අවශ්‍ය වන්නේ පරිගණකවල ධාරක නාම, පරිශීලක නාම සහ මුරපද ඔබගේම ආදේශ කිරීමයි.

ගැටළු ප්රකාශය

අපට පහත ජාල ස්ථලකය ඇතැයි උපකල්පනය කරමු:

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://127.0.0.1:8001 ට පමණක් ප්‍රවේශ විය හැකි HTTP සේවාදායකයක් ඇත. වෙබ් බ්‍රව්සරයක් විවෘත කිරීමෙන් 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.

ssh -D9991 HECසරලවම මෙහි hec.edu වෙතට යන්න
olejorgenb

0

ඔබට යන්ත්‍ර දෙකටම SSH කළ හැකි නම්, ssh හි ProxyCommand විධානය දෙස බලන්න. මෙය ඔබට localhost සිට host2 වෙත කෙලින්ම යාමට ඉඩ සලසයි (ඔබ පොදු යතුරු භාවිතා කරන්නේ නම් එක් පහසු විධානයකින් !!). එවිට ඔබට සත්කාරක 2 සමඟ ඔබට අවශ්‍ය ඕනෑම දෙයක් කළ හැකිය.

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


0

හොඳම පිළිතුරේ 2 වන විකල්පය වර්තමාන එකකට වඩා වෙනස් ssh භාවිතා කරන්නන් සමඟ භාවිතා කළ හැකිය: පරිශීලක @ සත්කාරක

    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:9999SOCKS සත්කාරක ලෙස භාවිතා කිරීමට වින්‍යාස කළෙමි .

දැන් මගේ පරිගණකයේ host2ෆයර්ෆොක්ස් වෙත ප්‍රවේශ විය හැකි නෝට්බුක් localhost:8890පරිගණකය තිබේ.


0

පිළිගත් පිළිතුරේ සඳහන් විකල්ප තුන මට කිසිසේත් සාර්ථක නොවීය. මට ධාරකයන් දෙකටම වැඩි අවසරයක් නොමැති නිසා සහ අපගේ DevOps කණ්ඩායමට සත්‍යාපනය කිරීමේදී එම්එෆ්ඒ කරන විට දැඩි නීති රීති ඇති බව පෙනේ. කෙසේ හෝ ඉහත විධානයන්ට අපගේ සත්‍යාපනය සමඟ හොඳින් ක්‍රියා කළ නොහැක.

සන්දර්භය ඇත්ත වශයෙන්ම ඉහත පිළිතුරු වලට සමාන ය: මට නිෂ්පාදන සේවාදායකයට කෙලින්ම යා නොහැකි අතර පැනීමේ සේවාදායකයක් භාවිතා කරමින් 1 හොප් එකක් කළ යුතුය.

තවත් විසඳුමක් - බොළඳ එකක්

මම එය ඉතා බොළඳ ආකාරයකින් අවසන් කළෙමි: මගේ ලැප්ටොප් පරිගණකයේ ඇති සියලුම විධාන ධාවනය කිරීමට උත්සාහ කරනවා වෙනුවට මම විධාන ක්‍රියාත්මක කරමි , පහත දැක්වෙන පරිදි සෑම යන්ත්‍රයකම :

  1. ඔබේ ජම්ප් සේවාදායකයට SSH, පසුව ධාවනය කරන්න 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 වරායේ ඇති ඕනෑම ඉල්ලීමක් ජම්ප් සේවාදායකයට යොමු කරනු ඇත. අපගේ පෙර පියවරේදී අප වින්‍යාස කර ඇති බැවින්, ජම්පර් සේවාදායකය නැවතත් 6969 වරායේ ඉල්ලීම් 2222 වරාය වෙත ආරක්ෂිත ගමනාන්ත සේවාදායකයට යොමු කරයි.

කිසියම් පණිවිඩයක් මුද්‍රණය කිරීමෙන් පසු එහි "එල්ලී" විධානය ඔබ දැකිය යුතුය - එයින් අදහස් වන්නේ ඔවුන් ක්‍රියා කරන බවයි! එක් ව්‍යතිරේකයක් - ඔබ එය දුටුවහොත් Could not request local forwarding.එය තවමත් ක්‍රියාත්මක නොවේ :(. ඔබට දැන් ඔබගේ ලැප්ටොප් පරිගණකයෙන් 6969 වරායේ ඉල්ලීම ඉවත් කිරීමට උත්සාහ කළ හැකි අතර එය ක්‍රියාත්මක වේදැයි බලන්න.

ඔබ ඉහත සියලු ක්‍රම අසමත් වූ අයෙක් නම්, ඔබට මෙය උත්සාහ කළ හැකිය.


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.