远程访问tomcat8.5的Manager App管理页面时出现403 Access Denied问题的解决方案(详细过程)

  1. tomcat版本说明:打开apache的官网http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.1/bin/

https://img-blog.csdnimg.cn/20190728103653834.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODEzMzY2MA==,size_16,color_FFFFFF,t_70

       从以上部分截图中可以看出,tomcat区分windows和linux系统,使用者可以根据自己的系统版本下载相应文件,windows用户下载exe或者zip的,linux用户下载tar.gz的。图中红色方框标记的两个分别是windows64位和32位系统的tomcat文件,绿色方框标记的是liunx系统的tomcat文件。目前最新版本是tomcat9;

2.下载说明:一般下载解压版的,方便使用;

3.使用环境说明:jdk1.8 + tomcat8.5 + linux CentOs7(在虚拟机中);

4.安装步骤:

4.1. 上传文件到虚拟机:使用SecureCRT连接到虚拟机中的CentOS,在SecureCRT中使用快捷键"Alt+P"打开SFTP窗口,将本地下载好的apache-tomcat-8.5.43.tar.gz文件拖到该窗口,文件将自动上传到虚拟机中CentOs中的根目录~下;

4.2. 在CentOS中创建 /apache/tomcat目录:

cd /  

mkdir apache

cd apache

mkdir tomcat

4.3. 解压apache-tomcat-8.5.43.tar.gz文件到4.2步中创建的/apache/tomcat/目录下:在CentOS的根目录 ~ 下输入以下命令,等待解压完成;

tar -zxvf apache-tomcat-8.5.43.tar.gz -C /apache/tomcat/

4.4 配置环境变量:将tomcat8.5的根目录/apache/tomcat/apache-tomcat-8.5.43/添加至CentOs的profile配置文件的PATH路径中;

cd /etc  //进入CentOs的etc目录

vi profile  //编辑profile配置文件

在该文件中,快捷键"Shift + a",进入编辑模式,在最后一行添加如下配置信息;

export TOMCAT_HOME=/apache/tomcat/apache-tomcat-8.5.43/

export PATH=$PATH:$TOMCAT_HOME/bin/

之后,按Esc键退出编辑模式,再按快捷键"Shift + z"保存退出该文件;最后输入source profile命令重新加载该配置文件;

4.5 测试tomcat是否配置成功:

回到 ~ 目录,输入startup.sh,如果tomcat启动成功,即表示配置已完成;

5.在宿主机中进行远程访问虚拟机中的tomcat主页:

我的宿主机使用的是win7系统,打开浏览器,地址栏输入192.168.225.128:8080;(虚拟机的IP地址是192.168.225.128);如果出现以下界面,说明虚拟机中的tomcat已正常启动;

https://img-blog.csdnimg.cn/20190728112405665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODEzMzY2MA==,size_16,color_FFFFFF,t_70

6. 远程向虚拟机中的tomcat中部署本地web项目:

需要访问tomcat的Manager App应用管理程序实现远程部署操作;此时发现无法进入Manager App管理界面,页面提提示403 Access Denied错误,这是因为你没有对manager应用的访问权限。来看下tomcat给出的解释:对于Tomcat 7以上,使用管理器应用程序所需的角色已从单个管理器角色更改为以下四个角色。您需要分配您希望访问的功能所需的角色。

  • manager-gui - 允许访问HTML GUI和状态页面
  • manager-script - 允许访问文本界面和状态页面
  • manager-jmx - 允许访问JMX代理和状态页面
  • manager-status - 仅允许访问状态页面

HTML接口受CSRF保护,但文本和JMX接口不受保护。为了保持CSRF保护:

  • 具有manager-gui角色的用户不应被授予manager-script或manager-jmx角色。
  • 如果通过浏览器访问text或jmx接口(例如,为了测试,因为这些接口用于工具而非人类),则必须在之后关闭浏览器以终止会话。

6.1. 配置tomcat-users.xml文件:回到SecureCRT中,进入到CentOS的/apache/tomcat/apache-tomcat-8.5.43/conf目录中修改tomcat-users.xml配置文件;

cd /apache/tomcat/apache-tomcat-8.5.43/conf

vi tomcat-users.xml

在</tomcat-users>标签前面添加如下代码:创建manager-gui角色,并将该角色分配给用户自定义的tomcat用户;

<role rolename="manager-gui"/>

<user username="tomcat" password="admin" roles="manager-gui"/>

如果需要访问host-manager应用管理程序,还需要创建admin-gui角色,并将该角色分配给tomcat用户,具体配置信息如下所示:

<role rolename="manager-gui"/>

<role rolename="admin-gui"/>

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

然后重启tomcat,重新在宿主机远程访问manager app页面,此时依旧会出现403 Access Denied错误,这是由于访问的ip地址受到了manager应用程序的限制。需要对anager应用程序的相关配置文件进行对应配置;

6.1. 配置manager应用程序中的context.xml文件:回到SecureCRT中,进入到CentOS的/apache/tomcat/apache-tomcat8.5.43/webapps/manager/META-INF/目录中修改context.xml配置文件;

cd /apache/tomcat/apache-tomcat8.5.43/webapps/manager/META-INF

vi context.xml

我们将里面的以下内容注释掉或修改为;

<Valve className="org.apache.catalina.valves.RemoteAddrValve"

allow="192\.168\.225\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

allow="192\.168\.225\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /表示允许本地回环地址及192.168.225.0网段访问manager应用程序;

你需要根据自己虚拟机的IP修改访问网段的地址或者具体的IP。比如你的网段是192.168.1.0,可以写成192\.168\.1\.\d+;或者允许192.168.1.100访问,写成192\.168\.1\.100;如果你不需要限定允许访问manager或host-manager应用程序的网段或具体IP,那么就可以将以上两行配置注释掉,此时所有用户都可以访问到这两个应用,为安全起见,不建议采用直接注释的方式;

如果需要要访问host-manager应用程序,还需要修改host-manager应用程序中的context.xml文件,修改内容和上面一样。

最后保存退出配置文件,然后重启tomcat,重新访问manager app页面,正确输入设置的用户名和密码,即可访问页面。

 


 

   

      


 


 

        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章