別のホストからTomcatManagerアプリにアクセスする


95

リモートサーバーにtomcat9をインストールしましたが、起動後、正常に起動しました。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ファイルを変更してマネージャーアプリにアクセスするにはどうすればよいですか?

回答:


143

デプロイされた各Webアプリケーションではあり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と、マネージャーにアクセスできるようになります。


Tomcatをシャットダウンして起動せずにこれらの構成変更をロードするにはどうすればよいですか?
カルディープ・ヤダフ2017年

403アクセスが拒否されました
Damir Olejar 2017

3
Tomcat 8では、何もする必要はありません。これらの構成変更はすぐに有効になります。
アユシャ2017

3
数回の試行の後、ようやく私のために働いた。パス「conf / Catalina / localhost」manager.xmlファイルで変更を行うときに、context.xmlファイルで変更を加えようとしました。存在しない場合は、作成する必要があります。
jellboi

8.5.37 Tomcatの場合、私も含める必要がありました:<バルブクラス名= "org.apache.catalina.valves.RemoteIpValveを" />
メリーランド。

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 2017

1
10〜15秒ほど待たなければなりませんでしたが、8.5.11では再起動は必要ありませんでした。ありがとう!
Karl Henselin 2017年

1
再起動せずに8.5.9で動作しました。ただし、Windows7マシンに適用するには約15秒かかりました。ありがとう!
cbmeeks 2017年

403アクセスが拒否されました
Damir Olejar 2017

1
Tomcatの初心者にとって、この質問に関係する重要な事実は、Tomcatが複数のcontext.xmlファイルを消費することです。Managerのcontext.xmlファイル編集するためのTomcatのデフォルトのエラーページの指示は、Managerアプリケーションのディレクトリにあるcontext.xmlファイル
CODE-REaD 2018年

11

別のマシンから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"/>

ここで、管理者ユーザーはroles = "manager-gui、manager-script、manager-jmx、manager-status"を割り当てています

ここで、Tomcatのユーザーとパスワードは: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で始まるローカルマシンIPのみを許可しています。\ 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が許可されます。

ありがとう:)


反対票の具体的な理由を追加してください。この答えが間違っていると思われる場合は、説明してください。あなたの説明の後、私は私の知識を向上させることができます。感謝
。メリーSajedulカリム

単一のIPへのアクセスを許可する代わりに、デフォルトファイルと同じ構文を使用してネットワークからすべてのIPへのアクセスを追加できます:<Valve className = "org.apache.catalina.valves.RemoteAddrValve" allow = "127 \。 \ d + \。\ d + \。\ d + | :: 1 | 0:0:0:0:0:0:1 | 192 \ .168 \ .250 \。\ d + "/>これにより、すべてのユーザーからのアクセスが可能になります192.168.250.0/24ローカルネットワーク内のホスト
トーマスLIMIN

2
この回答は、指定する唯一の回答です。YOUR.IP.ADDRESS.HEREしたがって、インターネット上のどこからでも別のホストからマネージャーアプリにアクセスするという質問に真に答えます。私見これはむしろ受け入れられた答えであるべきです。改善の提案:2.aを一番上に移動し、オプションで@ThomasLIMINの提案を追加します。
オラフコック

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

この回答はこの質問と一致しません
袁文涛2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.