program story

다른 호스트에서 Tomcat Manager 앱에 액세스

inputbox 2020. 10. 25. 12:11
반응형

다른 호스트에서 Tomcat Manager 앱에 액세스


원격 서버에 tomcat 9를 설치했고 시작 후 정상적으로 작동했습니다. http : // host_name : port_num에 액세스 하여 tomcat hello 페이지를 볼 수 있습니다 . 그러나 배포 된 앱을보기 위해 관리자 앱을 열려고하면 403 액세스가 거부되고 이미 다음과 같이 tomcat 사용자 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 파일을 변경하고 관리자 앱에 액세스하려면 어떻게해야합니까?


배포 된 각 웹앱에는 다음 위치에있는 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요소 의 허용 속성은 연결 호스트의 IP 주소와 일치하는 정규식입니다. 다른 Valve클래스는 다른 규칙을 제공합니다 (예 : RemoteHostValve호스트 이름 일치).

위의 변경이 완료되면 관리자 URL에 액세스 할 때 인증 대화 상자가 표시되어야합니다. 제공 한 세부 정보를 입력 tomcat-users.xml하면 관리자에 대한 액세스 권한이 있어야합니다.


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을 다시 시작할 필요가 없음) 관리자 페이지가 표시됩니다.


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

다른 컴퓨터에서 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"/>

여기서 admin 사용자는 roles = "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에서는 127. \ d +. \ d +. \ d +로 시작하는 로컬 컴퓨터 IP 만 허용합니다 .

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

Here you just replace |YOUR.IP.ADDRESS.HERE with your IP address

2.b : Allow all IP:

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

Here using allow=".*" you are allowing all IP.

Thanks :)

참고URL : https://stackoverflow.com/questions/36703856/access-tomcat-manager-app-from-different-host

반응형