Truy cập ứng dụng Tomcat Manager từ máy chủ khác


95

Tôi đã cài đặt tomcat 9 trên một máy chủ từ xa và sau khi khởi động nó, nó hoạt động tốt, tôi có thể truy cập http: // host_name: port_num và xem trang chào tomcat. Nhưng khi tôi cố gắng mở ứng dụng trình quản lý để xem các ứng dụng đã triển khai của mình, tôi bị từ chối quyền truy cập 403, tôi đã thêm vai trò trong xml người dùng tomcat như sau:

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

Các thông báo lỗi tôi đã thấy là:

Theo mặc định, Trình quản lý máy chủ lưu trữ chỉ có thể truy cập được từ trình duyệt chạy trên cùng một máy với Tomcat. Nếu bạn muốn sửa đổi hạn chế này, bạn cần phải chỉnh sửa tệp context.xml của Trình quản lý máy chủ.

Làm cách nào để thay đổi tệp context.xml và có quyền truy cập vào ứng dụng trình quản lý?

Câu trả lời:


143

Mỗi ứng dụng web được triển khai có một context.xmltệp nằm trong

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

(conf/Catalina/localhost by default)

và có cùng tên với ứng dụng web ( manager.xmltrong trường hợp này). Nếu không có tệp nào, các giá trị mặc định được sử dụng.

Vì vậy, bạn cần tạo một tệp conf/Catalina/localhost/manager.xmlvà chỉ định quy tắc bạn muốn cho phép truy cập từ xa. Ví dụ: nội dung sau của manager.xmlsẽ cho phép truy cập từ tất cả các máy:

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

Lưu ý rằng thuộc tính allow của Valvephần tử là một biểu thức chính quy khớp với địa chỉ IP của máy chủ kết nối. Các Valvelớp khác phục vụ cho các quy tắc khác (ví dụ: RemoteHostValvekhớp với tên máy chủ).

Khi các thay đổi ở trên đã được thực hiện, bạn sẽ thấy hộp thoại xác thực khi truy cập URL của trình quản lý. Nếu bạn nhập các chi tiết bạn đã cung cấp, tomcat-users.xmlbạn sẽ có quyền truy cập vào Người quản lý.


phải làm gì để tải những thay đổi cấu hình này mà không cần tắt và khởi động tomcat?
Kuldeep Yadav

403 Access Denied
Damir Olejar

3
Trong tomcat 8, bạn không cần phải làm gì cả, những thay đổi cấu hình này có hiệu lực ngay lập tức.
Ayushya 17/07/17

3
Cuối cùng đã làm việc cho tôi sau vài lần thử. Tôi đang cố gắng thực hiện các thay đổi trong tệp context.xml trong khi các thay đổi sẽ được thực hiện trong đường dẫn "conf / Catalina / localhost" tệp manager.xml. Nếu nó không tồn tại, chỉ cần tạo một cái.
jellboi

Đối với tomcat 8.5.37, tôi cũng phải bao gồm: <Valve className = "org.apache.catalina.valves.RemoteIpValve" />
Md.

152

Đối với Tomcat v8.5.4 trở lên, tệp <tomcat>/webapps/manager/META-INF/context.xmlđã được điều chỉnh:

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

Thay đổi tệp này để nhận xét 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>

Sau đó, làm mới trình duyệt của bạn (không cần khởi động lại Tomcat), bạn có thể thấy trang trình quản lý.


Hoạt động trong 8.5.0 nhưng bắt buộc phải khởi động lại. Cảm ơn!
JRichardsz

1
Tôi đã phải đợi khoảng 10-15 giây, nhưng không cần khởi động lại trong 8.5.11. Cảm ơn!
Karl Henselin

1
Hoạt động trong 8.5.9 mà không cần khởi động lại. Tuy nhiên, mất khoảng 15 giây để áp dụng trên máy Windows 7. Cảm ơn!
cbmeeks,

403 Access Denied
Damir Olejar

1
Đối với người mới bắt đầu sử dụng Tomcat, một thực tế đáng chú ý cho câu hỏi này là Tomcat sử dụng nhiều context.xmltệp. Hướng dẫn trong trang lỗi mặc định của Tomcat để chỉnh sửa tệp context.xml của Trình quản lý có thể được nêu rõ ràng hơn khi chỉnh sửa tệp context.xml trong thư mục dành cho ứng dụng Trình quản lý.
CODE-REaD

12

Để truy cập trình quản lý tomcat từ các máy khác, bạn phải làm theo các bước sau:

1. Cập nhật tệp conf / tomcat-users.xml với người dùng và một số vai trò :

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

Ở đây người dùng quản trị đang chỉ định role = "manager-gui, manager-script, manager-jmx, manager-status" .

Ở đây người dùng và mật khẩu tomcat là: admin

2. Cập nhật tệp webapps / manager / META-INF / context.xml (Cho phép địa chỉ IP) :

Cấu hình mặc định :

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

Ở đây trong Valve, nó chỉ cho phép IP máy cục bộ bắt đầu bằng 127. \ d +. \ D +. \ D + .

2.a: Cho phép IP đặc biệt :

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

Ở đây bạn chỉ cần thay thế | YOUR.IP.ADDRESS.HERE bằng địa chỉ IP của bạn

2.b: Cho phép tất cả IP :

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

Ở đây sử dụng allow = ". *" Bạn đang cho phép tất cả IP.

Cảm ơn :)


Vui lòng thêm một lý do cụ thể cho việc bỏ phiếu xuống. Nếu câu trả lời này có vẻ sai thì vui lòng giải thích. Sau lời giải thích của bạn, tôi có thể cải thiện kiến ​​thức của mình. Cảm ơn
Md. Sajedul Karim

thay vì cho phép truy cập vào một ip duy nhất, bạn có thể thêm quyền truy cập vào tất cả ip từ mạng, sử dụng cú pháp tương tự như tệp de mặc định: <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 + "/> điều này cho phép truy cập từ tất cả lưu trữ trong mạng cục bộ 192.168.250.0/24
Thomas LIMIN

3
Câu trả lời này là câu trả lời duy nhất YOUR.IP.ADDRESS.HERE- và do đó thực sự trả lời câu hỏi để truy cập ứng dụng trình quản lý từ một máy chủ lưu trữ khác, không chỉ từ bất kỳ đâu trên internet. IMHO đây nên là câu trả lời được chấp nhận. Đề xuất cải tiến: Di chuyển 2.a lên trên cùng, tùy chọn thêm đề xuất củ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"/>

Câu trả lời này không khớp với câu hỏi này
袁文涛
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.