ఉన్న HTTP ప్రాక్సీకి SSH స్థానిక ఫార్వర్డ్: రెండు loopback చిరునామాలు
SSH హోస్ట్లో ఉన్న ప్రాక్సీ ఒకే స్థానిక ఫార్వర్డ్ ద్వారా ఒక అనువర్తనానికి సేవ చేయగలదు. రెండు loopback చిరునామాలను మరియు ప్రాక్సీ ప్రోటోకాల్ను వేరుగా ఉంచండి.
మీ ఆమోదించిన ప్రాక్సీ ఒక జంప్ హోస్ట్లో నడుస్తుంది, అక్కడ అది loopback లో మాత్రమే వింటుంది, కాబట్టి ఆ మెషీన్ బయట నుండి ఏదీ దానిని చేరుకోలేదు. మీకు VPN లేదా కొత్త ప్రాక్సీ అవసరం లేదు; ఆ మెషీన్ యొక్క ఒక పోర్టును మీ ఒక పోర్టుకు తీసుకురావాలి. స్థానిక ఫార్వర్డ్ సరిగ్గా అదే చేస్తుంది, మరియు దానికి ఒక ఆదేశం మరియు అనువర్తనం యొక్క ఒక సెట్టింగ్ అవసరం. గందరగోళం సాధారణంగా ఏ loopback చిరునామా ఏ మెషీన్కు చెందుతుందో కలిపేయడం నుండి వస్తుంది.
స్థిర ప్రాక్సీ ఇప్పటికే ఉందో లేదో నిర్ణయించండి
ఈ పద్ధతి ఇప్పటికే నడుస్తున్న సేవను ఫార్వర్డ్ చేస్తుంది. రిమోట్ హోస్ట్లో SSH డీమన్ మాత్రమే ఉండి ప్రాక్సీ లేకపోతే, ఎంత ఫార్వర్డ్ చేసినా అది ఏర్పడదు, మరియు కనెక్షన్ రిమోట్ వైపు నుండి తిరస్కరించబడుతుంది. ప్రాక్సీ బైండ్ అయిందో, దాని పోర్టు ఏదో, మరియు అది 127.0.0.1 లో వింటుందో లేక నిర్దిష్ట ఇంటర్ఫేస్ చిరునామాలో వింటుందో నిర్ధారించండి, ఎందుకంటే ఫార్వర్డ్ ఆ చిరునామానే లక్ష్యంగా చేసుకోవాలి.
దీన్ని మొదట నిర్ధారిస్తే, ఎప్పుడూ ఏదీనీ కనెక్ట్ కాని టన్నెల్ను డీబగ్ చేయకుండా తప్పించుకోవచ్చు.
ఫార్వర్డ్ను నిర్మించి ఆదేశాన్ని చదవండి
మీకు కావలసిన రూపం మీ ల్యాప్టాప్లో ఒక loopback పోర్టును బైండ్ చేసి, సర్వర్ వైపు నుండి దానిని ప్రాక్సీ చిరునామాకు సర్వర్ చూసే విధంగా కనెక్ట్ చేస్తుంది.
ssh -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
-L 127.0.0.1:13128:127.0.0.1:3128 [email protected]-N రిమోట్ ఆదేశాన్ని అణచివేస్తుంది, -T termios కేటాయింపును అణచివేస్తుంది, ఎందుకంటే మీకు షెల్ కాదు, టన్నెల్ కావాలి. మొదటి loopback చిరునామా ల్యాప్టాప్ వినే స్థలం; రెండవదాన్ని SSH సర్వర్ పరిష్కరిస్తుంది, కాబట్టి అక్కడి 127.0.0.1 ఆ మెషీన్లోని ప్రాక్సీని సూచిస్తుంది. ExitOnForwardFailure స్థానిక పోర్టు ఇప్పటికే తీసుకోబడి ఉంటే ఏదీ ఫార్వర్డ్ చేయని సెషన్ను ప్రారంభించడం బదులు ఆదేశాన్ని బిగ్గరగా విఫలం చేస్తుంది. లక్ష్య చిరునామాన్ని సర్వర్ పరిష్కరించే విధంగానే రాయండి, ఎందుకంటే మీ ల్యాప్టాప్ మాత్రమే పరిష్కరించగల పేరు ఆ వైపు విఫలమవుతుంది.
ఇవి ఏవీ పని చేయక ముందు సర్వర్ యొక్క స్వంత విధానం వర్తిస్తుంది. AllowTcpForwarding దానిని అనుమతించాలి, PermitOpen ఒక సెషన్ ఏ గమ్యస్థానాలు మరియు పోర్టులను చేరుకోగలదో పరిమితం చేయవచ్చు, కాబట్టి క్లయింట్ అంగీకరించే ఫార్వర్డ్ను సర్వర్ ఇప్పటికీ తిరస్కరించవచ్చు. తిరస్కారం క్లయింట్లో ఫార్వర్డ్ లేదా ఛానెల్ లోపంగా కనిపిస్తుంది, ఆ సందేశాన్ని చదవడం ఆదేశాన్ని సవరించడం కంటే వేగంగా ఉంటుంది.
ఒక అనువర్తనాన్ని ఫార్వర్డ్ వైపు మళ్లించండి
http://127.0.0.1:13128 లో HTTP ప్రాక్సీ ఉపయోగించడానికి అనువర్తనాన్ని కాన్ఫిగర్ చేయండి, రిమోట్ ప్రాక్సీ కోరితే ఆధారాలతో. HTTPS గమ్యస్థానాలకు అనువర్తనం యొక్క స్వంత ధృవపత్ర ధృవీకరణను ఉంచండి, ఎందుకంటే ప్రాక్సీ టన్నెల్ దానిని భర్తీ చేయదు. ఇది ఒక సేవ యొక్క స్థిర ఫార్వర్డ్, కాబట్టి అనువర్తనానికి ప్రాక్సీ ఉందని చెప్పాలి, తనే కనుగొనడానికి వదిలేయకూడదు.
ఏదైనా శాశ్వత కాన్ఫిగరేషన్కు ముందు త్వరిత తనిఖీ: curl -x http://127.0.0.1:13128 -I https://example.com, ఇది ప్రాక్సీ మద్దతు ఇవ్వాల్సిన HTTP CONNECT పద్ధతిని సాధన చేస్తుంది.
అధికారాన్ని ఉన్నచోటే ఉంచండి
రిమోట్ ప్రాక్సీ ఇంకా ఏ గమ్యస్థానాలు మరియు పద్ధతులను అనుమతిస్తుందో నిర్ణయిస్తుంది, SSH లాగిన్ ప్రతి ఖాతాకు నిశ్శబ్దంగా సాధారణ వెబ్ రిలే ఇవ్వకూడదు. ల్యాప్టాప్లో 127.0.0.1 కి బైండ్ చేయడం పోర్టును మీ స్థానిక నెట్వర్క్కు ప్రచురించకుండా నివారిస్తుంది, మరియు అది అదే మెషీన్లోని ఇతర ప్రక్రియల నుండి పోర్టును ప్రైవేట్గా చేయదు. ఆ బైండింగ్ను ప్రాక్సీ పంచుకోవడానికి wildcard చిరునామాతో భర్తీ చేయడమే నిర్వహణ లేని తెరిచిన రిలే ఏర్పడే మార్గం.
SSH రవాణా సర్వర్ వరకు దూకుడును రక్షిస్తుంది. ఆ బిందువు తర్వాత ప్రాక్సీ తన స్వంత కనెక్షన్ను తెరుస్తుంది, కాబట్టి గమ్యస్థానానికి సాధారణ HTTP అభ్యర్థన మొదటి భాగం గుప్తీకరించబడినా సర్వర్ ఆవల కూడా సాధారణంగానే ఉంటుంది.
రెండు చివరలను ధృవీకరించి, తర్వాత శుభ్రం చేయండి
స్థానిక టన్నెల్ సెటప్ మరియు రిమోట్ సేవ యొక్క విజయం వేర్వేరు ఫలితాలు, ఆదేశం యొక్క నిష్క్రమణ స్థితి మొదటి దాని గురించి మాత్రమే చెబుతుంది. ss -ltn తో వినేవాడు ఉన్నాడో లేదో తనిఖీ చేయండి, తర్వాత అనుమతించిన అనువర్తన అభ్యర్థన మరియు ప్రాక్సీ తిరస్కరించాల్సిన అభ్యర్థన చేయండి. రెండూ ఆశించిన విధంగా ప్రవర్తిస్తే మార్గం నిజం; టన్నెల్ నడుస్తూ ప్రతి అభ్యర్థన విఫలమైతే, ప్రాక్సీ తిరస్కరిస్తోంది లేదా గమ్యస్థానాన్ని చేరుకోలేకపోతోంది.
పూర్తయ్యాక, దానిని కలిగి ఉన్న SSH ప్రక్రియను ఆపండి, అనువర్తనం నుండి ప్రాక్సీ సెట్టింగ్ను తీసివేయండి, మరియు పని కంటే ఎక్కువ కాలం జీవించే వినేవాడిని వదిలేయకుండా స్థానిక పోర్టు వెళ్లిపోయిందని నిర్ధారించండి.