Acesse o aplicativo Tomcat Manager de um host diferente


96

Eu instalei o tomcat 9 em um servidor remoto e depois de iniciá-lo, ele foi ativado corretamente, posso acessar http: // host_name: port_num e ver a página do tomcat hello. Mas quando tento abrir o aplicativo gerenciador para ver meus aplicativos implantados, obtenho 403 acesso negado, já adiciono funções no usuário xml do tomcat como segue:

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

As mensagens de erro que vi são:

Por padrão, o Host Manager só pode ser acessado em um navegador em execução na mesma máquina do Tomcat. Se desejar modificar esta restrição, você precisará editar o arquivo context.xml do Host Manager.

Como devo alterar o arquivo context.xml e obter acesso ao aplicativo gerenciador?

Respostas:


144

Cada webapp implantado tem um context.xmlarquivo que reside em

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

(conf/Catalina/localhost by default)

e tem o mesmo nome do webapp ( manager.xmlneste caso). Se nenhum arquivo estiver presente, os valores padrão serão usados.

Portanto, você precisa criar um arquivo conf/Catalina/localhost/manager.xmle especificar a regra que deseja permitir o acesso remoto. Por exemplo, o seguinte conteúdo de manager.xmlpermitirá o acesso de todas as máquinas:

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

Observe que o atributo allow do Valveelemento é uma expressão regular que corresponde ao endereço IP do host de conexão. Outras Valveclasses atendem a outras regras (por exemplo, RemoteHostValvepara nomes de host correspondentes).

Uma vez que as alterações acima tenham sido feitas, você deverá ver uma caixa de diálogo de autenticação ao acessar a URL do gerenciador. Se você inserir os dados fornecidos, tomcat-users.xmldeverá ter acesso ao gerenciador.


o que deve ser feito para carregar essas alterações de configuração sem desligar e iniciar o tomcat?
Kuldeep Yadav

403 Acesso negado
Damir Olejar

3
No tomcat 8, você não precisa fazer nada, essas alterações de configuração entram em vigor imediatamente.
Ayushya

3
Finalmente funcionou para mim depois de algumas tentativas. Eu estava tentando fazer alterações no arquivo context.xml enquanto as alterações deveriam ser feitas no caminho "conf / Catalina / localhost" arquivo manager.xml. Se não existir, basta criar um.
Umar Maniar

Para tomcat 8.5.37, eu também tive que incluir: <Valve className = "org.apache.catalina.valves.RemoteIpValve" />
Md.

154

Para Tomcat v8.5.4 e superior, o arquivo <tomcat>/webapps/manager/META-INF/context.xmlfoi ajustado:

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

Altere este arquivo para comentar o 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>

Depois disso, atualize seu navegador (não é necessário reiniciar o Tomcat), você pode ver a página do gerenciador.


Funciona em 8.5.0, mas foi necessário reiniciar. Obrigado!
JRichardsz de

1
Tive que esperar cerca de 10-15 segundos, mas não foi necessário reiniciar em 8.5.11. Obrigado!
Karl Henselin,

1
Trabalhou em 8.5.9 sem reiniciar. Porém, demorou cerca de 15 segundos para aplicar na máquina Windows 7. Obrigado!
cbmeeks de

403 Acesso negado
Damir Olejar

1
Para iniciantes do Tomcat, um fato significativo nesta questão é que o Tomcat consome vários context.xmlarquivos. As instruções na página de erro padrão do Tomcat para editar o arquivo context.xml do gerenciador podem ser mais claramente declaradas como editar o arquivo context.xml no diretório do aplicativo do gerenciador.
CODE-REaD

12

Para acessar o gerenciador do tomcat de uma máquina diferente, você deve seguir as etapas abaixo:

1. Atualize o arquivo conf / tomcat-users.xml com o usuário e algumas funções :

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

Aqui, o usuário administrador está atribuindo funções = "manager-gui, manager-script, manager-jmx, manager-status" .

Aqui, o usuário e a senha do tomcat são: admin

2. Atualize o arquivo webapps / manager / META-INF / context.xml (permitindo o endereço IP) :

Configuração padrão :

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

Aqui na Valve, é permitido que apenas o IP da máquina local comece com 127. \ d +. \ D +. \ D + .

2.a: Permitir IP específico :

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

Aqui, você apenas substitui | YOUR.IP.ADDRESS.HERE pelo seu endereço IP

2.b: Permitir todos os IP :

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

Aqui, usando allow = ". *" Você está permitindo todos os IPs.

Obrigado :)


Por favor, adicione um motivo específico para voto negativo. Se esta resposta parecer errada, explique. Após sua explicação, posso aprimorar meus conhecimentos. Obrigado
Md. Sajedul Karim

em vez de permitir o acesso a um único ip, você pode adicionar acesso a todos os ip de uma rede, usando a mesma sintaxe do arquivo padrão: <Valve className = "org.apache.catalina.valves.RemoteAddrValve" allow = "127 \. \ d + \. \ d + \. \ d + | :: 1 | 0: 0: 0: 0: 0: 0: 0: 0: 1 | 192 \ .168 \ .250 \. \ d + "/> isto permite o acesso de todos hosts na rede local 192.168.250.0/24
Thomas LIMIN

3
Essa resposta é a única que especifica YOUR.IP.ADDRESS.HERE- e, portanto, realmente responde à pergunta para acessar o aplicativo gerenciador de um host diferente, não apenas de qualquer lugar na Internet. IMHO esta deve ser a resposta aceita. Sugestão de melhoria: Mova 2.a para o topo, opcionalmente adicione a sugestão de @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"/>

Esta resposta não corresponde a esta pergunta
袁文涛
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.