Ssh උමං මාර්ගය මහජනතාව සඳහා විවෘත කරන්නේ කෙසේද?


198

හොඳයි, මෙම ප්‍රශ්නයට නැවත යොමු කරමින් , මම විධානය ක්‍රියාත්මක කරමි

ssh -R 8080:localhost:80 -N root@example.com

මැක් මත. එහෙත් උමං මාර්ගයක් වන වරාය ප්‍රසිද්ධියේ ක්‍රියාත්මක නොවේ. දුරස්ථ පරිගණකයේ දේශීය වරාය විවෘත කළ හැකි වන පරිදි මම එවැනි විධානයක් ක්‍රියාත්මක කරමි. දුරස්ථ පරිගණකයේ localhost හි වරාය විවෘත කිරීමේදී එය ක්‍රියා කරයි, නමුත් දුරස්ථ පරිගණකයේ පොදු IP ලිපිනය මගේ දේශීය පරිගණකයෙන් ප්‍රවේශ කිරීමට උත්සාහ කරන විට වරාය විවෘතව ඇති බවක් නොපෙනේ. ඕනෑම කෙනෙකුට ප්‍රවේශ විය හැකි පරිදි අයිපී හි උමං මාර්ගය ප්‍රසිද්ධ කරන්නේ කෙසේද?

සංස්කරණය කරන්න: දුරස්ථ පැත්ත සියලු අතුරුමුහුණත් වෙනුවට localhost මත පමණක් බැඳී ඇති බව පෙනේ.

සංස්කරණය 2: සේවාදායකයා මැක් ඕඑස් එක්ස් 10.6 වන අතර සේවාදායකය ලිනක්ස් මින්ට් වේ, නමුත් ඔවුන් දෙදෙනාම ඕපන්එස්එස්එච් ය.


පොදු IP යන්නෙන් අදහස් කරන්නේ කුමක්ද? ඔබ රවුටරය හරහා සහ අන්තර්ජාලය හරහා දේශීය පරිගණකයකට සම්බන්ධ වීමට උත්සාහ කරන්නේ නම්, බොහෝ රවුටර එවැනි ලූප්බැක් වලට ඉඩ නොදේ.
harrymc

Answers:


386

ඔබ ssh සඳහා man පිටුව පරීක්ෂා කළහොත්, -Rකියවීම් සඳහා වන වාක්‍ය ඛණ්ඩය ඔබට පෙනේ :

-R [ bind_address :] port : host : hostport

මඟ හැරුණු විට bind_address(ඔබේ උදාහරණයේ දී මෙන්), වරාය බැඳී ඇත්තේ ලූප්බැක් අතුරුමුහුණත මත පමණි. එය සියලු අතුරුමුහුණත් සමඟ බැඳීමට නම්, භාවිතා කරන්න

ssh -R \*:8080:localhost:80 -N root@example.com

හෝ

ssh -R 0.0.0.0:8080:localhost:80 -N root@example.com

හෝ

ssh -R "[::]:8080:localhost:80" -N root@example.com

පළමු අනුවාදය සියලු අතුරුමුහුණත් සමඟ තනි තනිව බැඳී ඇත. දෙවන අනුවාදය සාමාන්‍ය IPv4- පමණක් බන්ධනයක් නිර්මාණය කරයි, එයින් අදහස් වන්නේ IPv4 හරහා සියලුම අතුරුමුහුණත් සඳහා වරායට ප්‍රවේශ විය හැකි බවයි. තෙවන අනුවාදය බොහෝ විට තාක්‍ෂණිකව පළමු එකට සමාන වේ, නමුත් නැවතත් එය තනි බන්ධනයක් පමණක් නිර්මාණය කරයි ::, එයින් අදහස් වන්නේ වරායට IPv6 හරහා දේශීයව සහ IPv4 හරහා IPv4 සිතියම්ගත කළ IPv6 ලිපින හරහා ප්‍රවේශ විය හැකි බවයි (වින්ඩෝස්, ඕපන්බීඑස්ඩී හි ක්‍රියා නොකරයි) . (ඔබට උපුටා දැක්වීම් අවශ්‍ය වන්නේ [::]වෙනත් ආකාරයකින් ගෝලයක් ලෙස අර්ථ දැක්විය හැකි බැවිනි .)

ඔබ OpenSSH sshdසේවාදායකය භාවිතාGatewayPorts කරන්නේ නම් , මෙය ක්‍රියාත්මක වීමට සේවාදායකයේ විකල්පය සක්‍රීය කළ යුතු බව (සකසා yesහෝ clientspecified) ( /etc/ssh/sshd_configසේවාදායකයේ ගොනුව පරීක්ෂා කරන්න ). එසේ නොමැතිනම් (මෙම විකල්පය සඳහා පෙරනිමි අගය no), සේවාදායකයා සෑම විටම වරාය ලූප්බැක් අතුරුමුහුණත මත පමණක් බැඳීමට බල කරයි.


14
අනේ දෙවියනේ ඒක වැඩ කළා !!!!! මම එය හරියටම මිලියනය වතාවක් කර ඇත !! මට දැන් අමතක වුනා *බාෂ් වලින් ලිපිගොනු ලබා දෙන අතර මට අවශ්‍යයි\*
ට්‍රෙවර් රුඩොල්ෆ්

4
ඔව්, ඒ නිසා තමයි මම නිතරම කැමති 0.0.0.0- එය IPv4 පමණයි, නමුත් එය බොහෝ විට කරනු ඇත :)
ස්ටෙෆාන් සීඩෙල්

47
ගේට්වේපෝර්ට්ස් ඔව් මගේ ගැටලුව විසඳුවා.
සන්රි

4
GatewayPorts = ඔව් (දුරස්ථ sshd වින්‍යාසය මත) එය මා වෙනුවෙන්ද සවි කර ඇත
Phil_1984_

3
"ගේට්වේ පෝර්ට්ස් ඔව්" මගේ දවස බවට පත් කළා, ස්තූතියි te ස්ටෙෆාන්සීඩෙල්
කර්සර්

41

සංස්කරණය කරන්න:

-g දේශීය ඉදිරියට යැවූ වරායන් සඳහා ක්‍රියා කරයි, නමුත් ඔබට අවශ්‍ය වන්නේ ප්‍රතිලෝම / දුරස්ථ ඉදිරියට යැවූ වරායකි, එය වෙනස් වේ.

ඔබට අවශ්‍ය වන්නේ මෙයයි .

අත්යාවශ්යයෙන්ම, මත example.com, තබා GatewayPorts=clientspecifiedඇති /etc/ssh/sshd_config.

--- පෙර (වැරදි) පිළිතුර ---

-G විකල්පය භාවිතා කරන්න. Ssh ගේ මෑන් පිටුවෙන්:

-g     Allows remote hosts to connect to local forwarded ports.

වැඩ කරන බවක් නොපෙනේ ... එය ආරම්භ වන නමුත් මට දුරස්ථව සම්බන්ධ විය නොහැක
ට්‍රෙවර් රුඩොල්ෆ්

2
netstat -elnptකුමන ලිපිනයකට කුමන වරායන් බැඳී ඇත්දැයි සොයා බැලීමට වෙනම ටයිටයකින් ධාවනය කිරීමට උත්සාහ කරන්න . නොමැතිව -g, වරායකට බැඳිය යුතුය 127.0.0.1:PORT. සමඟ -g, එය 0.0.0.0:PORTදුරස්ථව ප්‍රවේශ විය හැකි වන පරිදි බැඳී තිබිය යුතුය .
snapshoe


2
GatewayPorts=clientspecifiedහෝGatewayPorts clientspecified
Trevor Rudolph

මම එය සේවාදායකයාට හෝ දුරස්ථයට එකතු කරනවාද?
Trevor Rudolph

16

සම්පූර්ණ කිරීම සඳහා මගේ පිළිතුර මෙන්න:

මම ssh -R ...උමං මාර්ග සඳහා භාවිතා කිරීම අවසන් කළ අතර , socatජාල ගමනාගමනය වෙත හරවා යැවීම සඳහා ඉහළින් භාවිතා කළේ 127.0.0.1:

උමග 127.0.0.1 ට බැඳී ඇත: ssh -R mitm:9999:<my.ip>:8084 me@mitm

socat: mitm$ socat TCP-LISTEN:9090,fork TCP:127.0.0.1:9999

අනෙක් විකල්පය වන්නේ ඊට ඉහළින් දේශීය පමණක් උමගක් කිරීමයි, නමුත් මට මෙය වඩා මන්දගාමී බව පෙනේ

mitm$ ssh -L<mitm.ip.address>:9090:localhost:9999 localhost


මම කැමතියි මට sshd වින්‍යාසය සමඟ ගනුදෙනු කිරීමට අවශ්‍ය නැති බවත් මට sudo නොමැතිව ඒ සියල්ල කළ හැකි බවත්. සොකට් පවතින බව මම ඉගෙන ගතිමි. ස්තූතියි!
බ ut ටස් කැට්

1
+ ඉහළට ඔබ යන්න සර්. මම සාර්ථක නොවී 0.0.0.0 ට බන්ධනය වන ලෙස ssh ට පැවසීමට උත්සාහ කළෙමි .. ඉන්පසු * වාක්‍ය ඛණ්ඩය දුටුවෙමි. මම හිතන්නේ එය sshd වින්‍යාසයේ යම් ආකාරයක ආරක්ෂක අංගයක් හෝ එයට ඉඩ නොදෙන දෙයක් විය හැකිය. අවසාන වශයෙන් මෙම ලිපිය දුටු අතර socatනියමයි. සුපිරි ප්‍රයෝජනවත්, මෙය මගේ පිටුපස සාක්කුවට දමන්න;]
ජයිම්

11

ඔබට ජයගත නොහැකි නම් හෝ / etc / ssh / sshd_config වෙනස් කළ හැකි නම් ඔබට ද්විත්ව ඉදිරියට භාවිතා කළ හැකිය.

දුරස්ථ යන්ත්‍රයේ ලූප්බැක් උපාංගයේ පළමුවෙන් තාවකාලික වරායට (උදා: 10080) ඉදිරියට යන්න, ඉන්පසු සියලු අතුරුමුහුණත් වල වරාය 10080 සිට 80 දක්වා හරවා යැවීමට දේශීය ඉදිරියට යන්න:

ssh -A -R 10080:localhost_or_machine_from:80 user@remote.tld "ssh -g -N -L 80:localhost:10080 localhost"

1
ඉදිරියට යැවීමේ නීති මඟ හැරීම සඳහා මෙය සැබවින්ම ක්‍රියාත්මක වේ!
මයිකල් ෂුබට්

මෙම විසඳුමට ආදරය කරන්න. යන්ත්‍රයේ
වින්‍යාසය

8

"ගේට්වේ පෝට්" විකල්පය භාවිතා කරන්න.

ssh -g -R REMOTE_PORT:HOST:PORT ...

එය භාවිතා කිරීම සඳහා, ඔබ බොහෝ විට GatewayPorts yesඔබේ සේවාදායකයට " " එකතු කළ /etc/ssh/sshd_configයුතුය.


ඇත්තටම මේක වැඩ කළා. මා කරන්නේ මගේ REST සේවාදායකයට යොමු කරන්නෙකු ලෙස EC2 නිදසුනක් භාවිතා කිරීමයි. මේ ආකාරයෙන්, මට මගේ සේවාදායකය DMZ හි ඇලවීමට අවශ්‍ය නොවන අතර මට පොදු IP අවශ්‍ය නොවේ. විනෝදජනකයි, මා විසින් නිර්මාණය කරන ලද පළමු EC2 අවස්ථාව සමඟ, ssh -R remote_port: localhost: port xxx @ ec2xxx ඉතා හොඳින් ක්‍රියාත්මක වූ නමුත් පසුව යම් හේතුවක් නිසා මට තවත් අවස්ථාවක් නිර්මාණය කිරීමට සිදුවිය. ප්‍රතික්ෂේප කළා. මට ලැබෙන්නේ කුමක් දැයි බැලීමට tcpdump භාවිතා කළ අතර වැඩි තොරතුරු නොමැත. -g ප්ලස් ගේට්වේපෝර්ට්ස් ඔව් උපක්‍රමය කළා.
ET

2

පැනීමේ ධාරකයන් යනු OpenSSH සඳහා තරමක් මෑත කාලීන එකතු කිරීමකි. මේ සඳහා අතරමැදි වෙත SSH ප්‍රවේශය අවශ්‍ය වන නමුත් අතිරේක වින්‍යාසයකින් තොරව ක්‍රියා කළ යුතුය.

ssh -J root@example.com remoteuser@localhost -p 8080

පරිශීලක නාමය යටතේ root@example.com8080 වරායට localhost(එනම්, ජම්ප් ධාරකයේ සිට දුරස්ථ ධාරකයට උමං කර ඇති වරාය) සම්බන්ධතාවයක් ආරම්භ කිරීමට මෙම විධානය SSH ට උපදෙස් දෙයි remoteuser.


0

~/.ssh/configවිධාන රේඛා පරාමිතීන් භාවිතා කිරීම වෙනුවට වින්‍යාසය ඔබ තුළ තැබීමට ඔබ කැමති නම් , ඔබට එවැනි දෙයක් උත්සාහ කළ හැකිය

Host REMOTE_HOST_NAME RemoteForward \*:8080 127.0.0.1:80

ඔබ දුරස්ථ ධාරකයේ ෆයර්වෝලය 8080 වෙත සම්බන්ධ වීමට ඉඩ GatewayPortsදී ඔබේ /etc/ssh/sshdවින්‍යාසයේ විකල්පය සකසා නොමැති බව සහතික කර ගන්නno

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.