Akses Aplikasi Tomcat Manager dari host berbeda

95

Saya telah menginstal tomcat 9 pada remote memutuskan dan setelah memulainya, itu muncul dengan baik, saya dapat mengakses http: // host_name: port_num dan melihat halaman hello tomcat. Tetapi ketika saya mencoba membuka aplikasi manajer untuk melihat aplikasi saya yang diterapkan, saya mendapatkan akses 403 ditolak, saya sudah menambahkan peran di tomcat user xml sebagai berikut:

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

Pesan kesalahan yang saya lihat adalah:

Secara default, Host Manager hanya dapat diakses dari browser yang berjalan pada mesin yang sama dengan Tomcat. Jika Anda ingin mengubah batasan ini, Anda harus mengedit file context.xml dari Host Manager.

Bagaimana saya harus mengubah file context.xml dan mendapatkan akses ke aplikasi manajer?

feichangh
sumber

Jawaban:

143

Setiap aplikasi web yang diterapkan memiliki context.xmlfile yang ada di dalamnya

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

(conf/Catalina/localhost by default)

dan memiliki nama yang sama dengan webapp ( manager.xmldalam hal ini). Jika tidak ada file, nilai default digunakan.

Jadi, Anda perlu membuat file conf/Catalina/localhost/manager.xmldan menentukan aturan yang Anda inginkan untuk mengizinkan akses jarak jauh. Misalnya, konten berikut manager.xmlakan memungkinkan akses dari semua mesin:

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

Perhatikan bahwa atribut allow dari Valveelemen tersebut adalah ekspresi reguler yang cocok dengan alamat IP dari host penghubung. ValveKelas lain melayani aturan lain (misalnya RemoteHostValveuntuk mencocokkan nama host).

Setelah perubahan di atas dilakukan, Anda akan melihat dialog otentikasi ketika mengakses URL manajer. Jika Anda memasukkan detail yang Anda berikan, tomcat-users.xmlAnda harus memiliki akses ke Manajer.

Matt Innes
sumber
apa yang harus dilakukan untuk memuat perubahan konfigurasi ini tanpa mematikan dan memulai tomcat?
Kuldeep Yadav
403 Akses Ditolak
Damir Olejar
3
Di tomcat 8, Anda tidak perlu melakukan apa-apa, perubahan konfigurasi ini akan segera berlaku.
Ayushya
3
Akhirnya berhasil untuk saya setelah beberapa kali mencoba. Saya mencoba untuk membuat perubahan pada file context.xml sementara perubahan itu akan dibuat di path file manager.xml "conf / Catalina / localhost". Jika tidak ada, cukup buat saja.
jellboi
Untuk tomcat 8.5.37, saya juga harus memasukkan: <Valve className = "org.apache.catalina.valves.RemoteIpValve" />
Md.
152

Untuk Tomcat v8.5.4 dan yang lebih baru, file <tomcat>/webapps/manager/META-INF/context.xmltelah disesuaikan:

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

Ubah file ini untuk memberi komentar 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>

Setelah itu, segarkan browser Anda (tidak perlu restart Tomcat), Anda dapat melihat halaman pengelola.

jqgsninimo.dll
sumber
Berfungsi di 8.5.0 tetapi perlu dimulai ulang. Terima kasih!
JRichardsz
1
Saya harus menunggu sekitar 10-15 detik, tetapi tidak perlu restart di 8.5.11. Terima kasih!
Karl Henselin
1
Bekerja di 8.5.9 tanpa restart. Namun, butuh waktu sekitar 15 detik untuk diterapkan di mesin Windows 7. Terima kasih!
cbmeeks
403 Akses Ditolak
Damir Olejar
1
Untuk pemula Tomcat, fakta penting yang berkaitan dengan pertanyaan ini adalah bahwa Tomcat menggunakan banyak context.xmlfile. Petunjuk di halaman kesalahan default Tomcat untuk mengedit file konteks.xml Manajer bisa lebih jelas dinyatakan sebagai edit file konteks.xml di direktori untuk aplikasi Manajer.
CODE-REaD
11

Untuk mengakses manajer kucing jantan dari mesin yang berbeda, Anda harus mengikuti langkah-langkah di bawah ini:

1. Perbarui file conf / tomcat-users.xml dengan pengguna dan beberapa peran :

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

Di sini pengguna admin menetapkan role = "manager-gui, manager-script, manager-jmx, manager-status" .

Berikut pengguna dan password tomcat adalah: admin

2. Perbarui file webapps / manager / META-INF / context.xml (Mengizinkan alamat IP) :

Konfigurasi default :

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

Di sini, di Valve, itu hanya mengizinkan IP mesin lokal yang dimulai dengan 127. \ d +. \ D +. \ D + .

2.a: Izinkan IP spesifik :

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

Disini anda tinggal mengganti | YOUR.IP.ADDRESS.HERE dengan alamat IP anda

2.b: Izinkan semua IP :

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

Di sini menggunakan allow = ". *" Anda mengizinkan semua IP.

Terima kasih :)

Md. Sajedul Karim
sumber
Harap tambahkan alasan spesifik untuk tidak memilih. Jika jawaban ini tampaknya salah, mohon jelaskan. Setelah penjelasan Anda saya dapat meningkatkan pengetahuan saya. Terima kasih
Md. Sajedul Karim
alih-alih mengizinkan akses ke satu ip, Anda dapat menambahkan akses ke semua ip dari jaringan, menggunakan sintaks yang sama seperti file default: <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 + "/> ini memungkinkan akses dari semua host di jaringan lokal 192.168.250.0/24
Thomas LIMIN
2
Jawaban ini adalah satu-satunya menspesifikasikan YOUR.IP.ADDRESS.HERE- dan dengan demikian benar-benar menjawab pertanyaan untuk mengakses aplikasi manager dari sebuah host yang berbeda, bukan hanya dari mana saja di internet. IMHO ini seharusnya menjadi jawaban yang diterima. Saran peningkatan: Pindahkan 2.a ke atas, tambahkan saran @ ThomasLIMIN secara opsional.
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"/>
Rajeev kumar
sumber
Jawaban ini tidak cocok dengan pertanyaan ini
袁文涛