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


96

원격 서버에 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 파일을 변경하고 관리자 앱에 액세스하려면 어떻게해야합니까?

답변:


144

배포 된 각 웹앱에는 다음 위치에있는 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을 종료하고 시작하지 않고 이러한 구성 변경 사항을로드하려면 어떻게해야합니까?
Kuldeep Yadav

거부 403 액세스
미르 Olejar

3
tomcat 8에서는 아무것도 할 필요가 없으며 이러한 구성 변경 사항이 즉시 적용됩니다.
Ayushya

3
몇 번의 시도 끝에 마침내 나를 위해 일했습니다. "conf / Catalina / localhost"manager.xml 파일 경로를 변경하는 동안 context.xml 파일을 변경하려고했습니다. 존재하지 않는 경우 하나만 생성하면됩니다.
Umar Maniar

tomcat 8.5.37의 경우 다음을 포함해야했습니다. <Valve 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>

그 후 브라우저를 새로 고치면 (Tomcat을 다시 시작할 필요가 없음) 관리자 페이지를 볼 수 있습니다.


8.5.0에서 작동하지만 다시 시작해야합니다. 감사!
JRichardsz

1
10-15 초 정도 기다려야했지만 8.5.11에서는 다시 시작할 필요가 없습니다. 감사!
Karl Henselin 2017 년

1
다시 시작하지 않고 8.5.9에서 작동했습니다. 그러나 Windows 7 시스템에 적용하는 데 약 15 초가 걸렸습니다. 감사!
cbmeeks

거부 403 액세스
미르 Olejar

1
Tomcat 초보자에게이 질문과 관련된 중요한 사실은 Tomcat이 여러 context.xml파일을 소비 한다는 것 입니다. Manager의 context.xml 파일편집 하기위한 Tomcat의 기본 오류 페이지에있는 지침 은 Manager 응용 프로그램의 디렉토리에있는 context.xml 파일
CODE-REaD

12

다른 컴퓨터에서 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"를 할당 합니다 .

여기 바람둥이 사용자와 비밀번호는 : admin

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

여기에서 | YOUR.IP.ADDRESS.HERE 를 IP 주소로 바꿉니다.

2.b : 모든 IP 허용 :

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

여기서 allow = ". *" 를 사용 하면 모든 IP를 허용합니다.

감사 :)


반대표에 대한 구체적인 이유를 추가하십시오. 이 대답이 잘못된 것 같으면 설명해주십시오. 당신의 설명 후에 나는 나의 지식을 향상시킬 수 있습니다. 감사합니다
Md. Sajedul Karim

단일 IP에 대한 액세스를 허용하는 대신 기본 파일 <Valve className = "org.apache.catalina.valves.RemoteAddrValve"allow = "127 \와 동일한 구문을 사용하여 네트워크에서 모든 IP에 대한 액세스를 추가 할 수 있습니다. \ d + \. \ d + \. \ d + | :: 1 | 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 | 192 \ .168 \ .250 \. \ d + "/> 모든 사용자의 액세스를 허용합니다. 192.168.250.0/24 로컬 네트워크에서 호스트
토마스 LIMIN

3
이 대답은 하나의 지정입니다 YOUR.IP.ADDRESS.HERE- 따라서 진정에서 관리자 응용 프로그램에 액세스 할 수있는 질문에 대답 아니라 인터넷에서 어디서든, 다른 호스트를. IMHO 이것은 오히려 받아 들여지는 대답이어야합니다. 개선 제안 : 2.a를 맨 위로 이동하고 선택적으로 @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"/>

답변이이 질문과 일치하지 않습니다
袁文涛
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.