अलग होस्ट से टॉमकैट मैनेजर ऐप एक्सेस करें


95

मैंने रिमोट कंट्रोल पर टॉमकट 9 स्थापित किया है और इसे शुरू करने के बाद, इसे ठीक किया गया, मैं http: // host_name: port_num पर पहुंच सकता हूं और टॉमकैट हैलो पेज देख सकता हूं । लेकिन जब मैं अपने तैनात किए गए ऐप को देखने के लिए मैनेजर ऐप खोलने की कोशिश करता हूं, तो मुझे 403 एक्सेस से वंचित कर दिया जाता है, मैं पहले से ही नीचे बताए अनुसार tomcat user xml में भूमिकाएँ जोड़ता हूं:

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="user" password="password" roles="admin,manager,manager-gui"/>

त्रुटि संदेश मैंने देखा है:

डिफ़ॉल्ट रूप से होस्ट मैनेजर केवल टॉमकैट जैसी मशीन पर चलने वाले ब्राउज़र से ही एक्सेस किया जा सकता है। यदि आप इस प्रतिबंध को संशोधित करना चाहते हैं, तो आपको होस्ट प्रबंधक के संदर्भ.xml फ़ाइल को संपादित करना होगा।

मुझे संदर्भ.एक्सएमएल फ़ाइल को कैसे बदलना चाहिए और प्रबंधक ऐप तक पहुंच प्राप्त करनी चाहिए?

जवाबों:


143

प्रत्येक तैनात किए गए वेबएप में एक context.xmlफ़ाइल होती है जो अंदर रहती है

$CATALINA_BASE/conf/[enginename]/[hostname]

(conf/Catalina/localhost by default)

और वेबप के समान नाम है ( manager.xmlइस मामले में)। यदि कोई फ़ाइल मौजूद नहीं है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।

इसलिए, आपको एक फ़ाइल बनाने conf/Catalina/localhost/manager.xmlऔर उस नियम को निर्दिष्ट करने की आवश्यकता है जिसे आप रिमोट एक्सेस की अनुमति देना चाहते हैं। उदाहरण के लिए, निम्नलिखित सामग्री manager.xmlसभी मशीनों से पहुंच की अनुमति देगी:

<Context privileged="true" antiResourceLocking="false" 
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

ध्यान दें कि Valveतत्व की अनुमति विशेषता एक नियमित अभिव्यक्ति है जो कनेक्टिंग होस्ट के आईपी पते से मेल खाती है। अन्य Valveकक्षाएं अन्य नियमों के लिए पूरी होती हैं (जैसे RemoteHostValveमेजबान नामों के मिलान के लिए)।

एक बार उपरोक्त परिवर्तन किए जाने के बाद, आपको प्रबंधक URL तक पहुँचते समय प्रमाणीकरण संवाद के साथ प्रस्तुत किया जाना चाहिए। यदि आप उन विवरणों को दर्ज करते हैं जो आपके द्वारा दिए गए tomcat-users.xmlहैं, तो प्रबंधक तक पहुंच होनी चाहिए।


इन कॉन्फ़िगरेशन परिवर्तनों को बंद किए बिना और टॉमकैट शुरू करने के लिए क्या करना चाहिए?
कुलदीप यादव

403 पहुँच अस्वीकृत
दामिर ओलेजर

3
टॉमकैट 8 में, आपको कुछ भी करने की आवश्यकता नहीं है, ये कॉन्फ़िगरेशन परिवर्तन तुरंत प्रभाव में आते हैं।
आयुषी

3
अंत में कुछ कोशिशों के बाद मेरे लिए काम किया। मैं reference.xml फ़ाइल में परिवर्तन करने का प्रयास कर रहा था, जबकि परिवर्तन पथ "conf / Catalina / localhost" manager.xml फ़ाइल में किए जाने थे। अगर यह मौजूद नहीं है तो बस एक बनाने की जरूरत है।
जलेबी

टॉमकैट 8.5.37 के लिए, मुझे भी शामिल करना था: <वाल्व className = "org.apache.catalina.valves.RemoteIpValve" />
Md।

152

Tomcat v8.5.4 और इसके बाद के संस्करण के लिए, फ़ाइल <tomcat>/webapps/manager/META-INF/context.xmlको समायोजित कर दिया गया है:

<Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

टिप्पणी करने के लिए इस फ़ाइल को बदलें Valve:

<Context antiResourceLocking="false" privileged="true" >
    <!--
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    -->
</Context>

उसके बाद, अपने ब्राउज़र को ताज़ा करें (टॉमकैट को पुनरारंभ करने की आवश्यकता नहीं है), आप प्रबंधक पृष्ठ देख सकते हैं।


8.5.0 में काम करता है लेकिन पुनरारंभ की आवश्यकता थी। धन्यवाद!
जेचरिड्स

1
मुझे लगभग 10-15 सेकंड इंतजार करना पड़ा, लेकिन 8.5.11 में किसी भी पुनरारंभ की आवश्यकता नहीं थी। धन्यवाद!
कार्ल हेंसेलिन

1
पुनः आरंभ किए बिना 8.5.9 में काम किया। हालाँकि, विंडोज 7 मशीन पर आवेदन करने में लगभग 15 सेकंड का समय लगा। धन्यवाद!
cbmeeks 13

403 पहुँच अस्वीकृत
दामिर ओलेजर

1
टॉमकैट शुरुआती के लिए, इस सवाल पर एक महत्वपूर्ण तथ्य यह है कि टॉमकैट कई context.xmlफाइलों का उपभोग करता है। प्रबंधक के संदर्भ को संपादित करने के लिए टॉमकैट की डिफ़ॉल्ट त्रुटि पृष्ठ में निर्देश । xml फ़ाइल को प्रबंधक एप्लिकेशन के लिए निर्देशिका में संदर्भ.xml फ़ाइल
CODE-REaD

11

टॉमकैट मैनेजर को विभिन्न मशीन से एक्सेस करने के लिए आपको बलो स्टेप्स का पालन करना होगा:

1. अपडेट की पुष्टि करें / उपयोगकर्ता और कुछ भूमिकाओं के साथ tomcat-users.xml फ़ाइल :

<role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

यहां व्यवस्थापक उपयोगकर्ता भूमिकाएं दे रहा है = "प्रबंधक-गुई, प्रबंधक-स्क्रिप्ट, प्रबंधक-जेएमएक्स, प्रबंधक-स्थिति"

यहां टॉमकैट यूजर और पासवर्ड है: एडमिन

2. अद्यतन webapps / प्रबंधक / META-INF / context.xml फ़ाइल (आईपी पते की अनुमति दे) :

डिफ़ॉल्ट कॉन्फ़िगरेशन :

<Context antiResourceLocking="false" privileged="true" >
  
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

यहाँ वाल्व में यह केवल स्थानीय मशीन IP को 127. \ d +। \ D +। \ D + के साथ शुरू करने की अनुमति देता है ।

2.a: specefic आईपी की अनुमति दें :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|YOUR.IP.ADDRESS.HERE" />

यहां आप बस अपने आईपी पते के साथ अपने .IP.ADDRESS.HERE को प्रतिस्थापित करते हैं

2. बी: सभी आईपी की अनुमति दें :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" />

यहाँ allow = "। *" का उपयोग करके आप सभी IP को अनुमति दे रहे हैं।

धन्यवाद :)


कृपया नीचे वोट के लिए एक विशेष कारण जोड़ें। यदि यह उत्तर गलत लगता है तो कृपया समझाएं। आपके स्पष्टीकरण के बाद मैं अपने ज्ञान में सुधार कर सकता हूं। धन्यवाद
। मोहम्मद Sajedul करीम

एक एकल आईपी तक पहुंच की अनुमति देने के बजाय, आप एक नेटवर्क से सभी आईपी तक पहुँच को जोड़ सकते हैं, एक ही वाक्यविन्यास को डी डिफ़ॉल्ट फ़ाइल के रूप में उपयोग कर सकते हैं: <वाल्व className = "org.apache.catalina.valves .emoteAddrValve" = 127 "। \ d + \ _। \ d + \ _। d:। :: 1 | 0: 0: 0: 0: 0: 0: 0: 1: 192 \ _168 \ .250 \। \ d + "/> यह सभी तक पहुँच की अनुमति देता है। स्थानीय नेटवर्क में मेजबान 192.168.250.0/24
थॉमस लिमिन

2
यह उत्तर केवल एक निर्दिष्ट है YOUR.IP.ADDRESS.HERE- और इस प्रकार यह इंटरनेट पर कहीं से भी नहीं, बल्कि एक अलग मेजबान से प्रबंधक ऐप को एक्सेस करने के प्रश्न का सही उत्तर देता है । IMHO यह बल्कि स्वीकृत उत्तर होना चाहिए। सुधार का सुझाव: 2.a को शीर्ष पर ले जाएँ, वैकल्पिक रूप से @ ThomasLIMIN के सुझाव को जोड़ें।
ओलाफ कोक

3
Following two configuration is working for me.

1 .tomcat-users.xml details
--------------------------------
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="tomcat"/>


  <user  username="tomcat"  password="tomcat" roles="tomcat"/>

  <user  username="admin"  password="admin" roles="admin-gui"/>

  <user  username="adminscript"  password="adminscrip" roles="admin-script"/>

  <user  username="tomcat"  password="s3cret" roles="manager-gui"/>
  <user  username="status"  password="status" roles="manager-status"/>

  <user  username="both"    password="both"   roles="manager-gui,manager-status"/>

  <user  username="script"  password="script" roles="manager-script"/>
  <user  username="jmx"     password="jmx"    roles="manager-jmx"/>

2. context.xml  of <tomcat>/webapps/manager/META-INF/context.xml and 
<tomcat>/webapps/host-manager/META-INF/context.xml
------------------------------------------------------------------------
<Context antiResourceLocking="false" privileged="true" >

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>

इस उत्तर इस सवाल से मेल नहीं खाता
袁文涛
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.