Подтвердить что ты не робот

Доступ к приложению Tomcat Manager с другого хоста

Я установил tomcat 9 на удаленном сервере и после его запуска, он был хорошо воспроизведен, я могу получить доступ к http://host_name:port_num и посмотреть страницу приветствия tomcat. Но когда я пытаюсь открыть приложение-менеджер, чтобы увидеть мои развернутые приложения, я получаю доступ 403, я уже добавляю роли в tomcat user xml следующим образом:

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

Сообщения об ошибках, которые я видел, это:

По умолчанию хост-менеджер доступен только из браузера, работающего на том же компьютере, что и Tomcat. Если вы хотите изменить это ограничение, вам нужно будет отредактировать файл context.xml менеджера хоста.

Как мне изменить файл context.xml и получить доступ к приложению менеджера?

4b9b3361

Ответ 1

Каждый развернутый webapp имеет файл context.xml, который живет в

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

(conf/Catalina/localhost by default)

и имеет то же имя, что и webapp (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>

Обратите внимание, что атрибут allow элемента Valve является регулярным выражением, которое соответствует IP-адресу соединительного узла. Другие классы Valve удовлетворяют другим правилам (например, RemoteHostValve для сопоставления имен хостов).

После внесения указанных изменений вы должны получить диалоговое окно проверки подлинности при обращении к URL-адресу менеджера. Если вы введете данные, которые вы предоставили в tomcat-users.xml, у вас должен быть доступ к Менеджеру.

Ответ 2

Для 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>

После этого обновите браузер (не нужно перезагружать Tomcat), вы можете увидеть страницу менеджера.

Ответ 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"/>

Ответ 4

Чтобы получить доступ к диспетчеру tomcat с другого компьютера, выполните следующие действия:

1. Обновите файл conf/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"/>

Здесь администратор назначает role = "manager-gui, manager-script, manager-jmx, manager-status".

2. Обновите файл webapps/manager/META-INF/context.xml (разрешающий IP-адрес):

Конфигурация по умолчанию:

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

Здесь, в Valve, разрешено запускать только IP-адрес локального компьютера с 127.\d+.\d+.\d+.

2.a: разрешить специальный IP:

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

Здесь вы просто замените | YOUR.IP.ADDRESS.HERE своим IP-адресом

2.b: разрешить все IP:

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

Здесь, используя allow = ". *", вы разрешаете все IP.

Спасибо :)