Accedi all'app Tomcat Manager da un host diverso


95

Ho installato Tomcat 9 su un server remoto e dopo averlo avviato, è stato avviato correttamente, posso accedere a http: // nome_host: numero_porta e vedere la pagina ciao di Tomcat. Ma quando provo ad aprire l'app di gestione per vedere le mie app distribuite, ottengo 403 accesso negato, aggiungo già ruoli in xml utente tomcat come segue:

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

I messaggi di errore che ho visto sono:

Per impostazione predefinita, Host Manager è accessibile solo da un browser in esecuzione sulla stessa macchina di Tomcat. Se desideri modificare questa restrizione, dovrai modificare il file context.xml di Host Manager.

Come devo modificare il file context.xml e ottenere l'accesso all'app di gestione?

Risposte:


143

Ogni webapp distribuita ha un context.xmlfile che risiede

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

(conf/Catalina/localhost by default)

e ha lo stesso nome della webapp ( manager.xmlin questo caso). Se non è presente alcun file, vengono utilizzati i valori predefiniti.

Quindi, è necessario creare un file conf/Catalina/localhost/manager.xmle specificare la regola a cui si desidera consentire l'accesso remoto. Ad esempio, il seguente contenuto di manager.xmlconsentirà l'accesso da tutte le macchine:

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

Notare che l'attributo allow Valvedell'elemento è un'espressione regolare che corrisponde all'indirizzo IP dell'host di connessione. Altre Valveclassi soddisfano altre regole (ad esempio RemoteHostValveper la corrispondenza dei nomi host).

Una volta apportate le modifiche di cui sopra, dovresti visualizzare una finestra di dialogo di autenticazione quando accedi all'URL del gestore. Se inserisci i dettagli che hai fornito tomcat-users.xmldovresti avere accesso al Manager.


cosa si dovrebbe fare per caricare queste modifiche alla configurazione senza chiudere e avviare Tomcat?
Kuldeep Yadav

403 Accesso negato
Damir Olejar

3
In Tomcat 8, non è necessario fare nulla, queste modifiche alla configurazione entrano in vigore immediatamente.
Ayushya

3
Finalmente ha funzionato per me dopo pochi tentativi. Stavo cercando di apportare modifiche nel file context.xml mentre le modifiche dovevano essere apportate nel percorso "conf / Catalina / localhost" file manager.xml. Se non esiste basta crearne uno.
jellboi

Per tomcat 8.5.37, ho dovuto includere anche: <Valve className = "org.apache.catalina.valves.RemoteIpValve" />
Md.

152

Per Tomcat v8.5.4 e versioni successive, il file <tomcat>/webapps/manager/META-INF/context.xmlè stato modificato:

<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>

Modifica questo file per commentare 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>

Successivamente, aggiorna il browser (non è necessario riavviare Tomcat), puoi vedere la pagina del gestore.


Funziona in 8.5.0 ma è necessario riavviare. Grazie!
JRichardsz

1
Ho dovuto aspettare circa 10-15 secondi, ma non è stato necessario riavviare 8.5.11. Grazie!
Karl Henselin

1
Ha funzionato in 8.5.9 senza riavvio. Tuttavia, sono stati necessari circa 15 secondi per l'applicazione su una macchina Windows 7. Grazie!
cbmeeks

403 Accesso negato
Damir Olejar

1
Per i principianti di Tomcat, un fatto significativo relativo a questa domanda è che Tomcat utilizza più context.xmlfile. Le istruzioni nella pagina di errore predefinita di Tomcat per modificare il file context.xml di Manager potrebbero essere indicate più chiaramente modificando il file context.xml nella directory per l'applicazione Manager.
CODE-REaD

11

Per accedere al gestore tomcat da una macchina diversa devi seguire i seguenti passaggi:

1. Aggiorna il file conf / tomcat-users.xml con utente e alcuni ruoli :

<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"/>

Qui l'utente amministratore sta assegnando ruoli = "manager-gui, manager-script, manager-jmx, manager-status" .

Qui l'utente e la password di Tomcat sono: admin

2. Aggiorna webapps / manager / META-INF / context.xml file (Consenti indirizzo IP) :

Configurazione predefinita :

<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>

Qui in Valve consente solo l'inizio dell'IP della macchina locale con 127. \ d +. \ D +. \ D + .

2.a: Consenti IP specifico :

<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" />

Qui devi solo sostituire | YOUR.IP.ADDRESS.HERE con il tuo indirizzo IP

2.b: Consenti tutti gli IP :

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

Qui usando allow = ". *" Permetti tutti gli IP.

Grazie :)


Aggiungi un motivo specifico per il voto negativo. Se questa risposta sembra sbagliata, ti preghiamo di spiegare. Dopo la tua spiegazione posso migliorare le mie conoscenze. Grazie
Md. Sajedul Karim

invece di consentire l'accesso a un singolo ip, è possibile aggiungere l'accesso a tutti gli ip da una rete, utilizzando la stessa sintassi del file predefinito: <Valve className = "org.apache.catalina.valves.RemoteAddrValve" allow = "127 \. \ d + \. \ d + \. \ d + | :: 1 | 0: 0: 0: 0: 0: 0: 0: 1 | 192 \ .168 \ .250 \. \ d + "/> consente l'accesso da tutti host nella rete locale 192.168.250.0/24
Thomas LIMIN

2
Questa risposta è l'unica che specifica YOUR.IP.ADDRESS.HEREe quindi risponde veramente alla domanda per accedere all'app di gestione da un host diverso, non solo da qualsiasi punto di Internet. IMHO questa dovrebbe piuttosto essere la risposta accettata. Suggerimento di miglioramento: sposta 2.a in alto, facoltativamente aggiungi il suggerimento di @ ThomasLIMIN.
Olaf Kock

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"/>

Questa risposta non corrisponde a questa domanda
袁文涛
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.