使用 Jenkins 在远程 Tomcat8 上部署时,您提供的用户名不允许使用基于文本的 Tomcat 管理器(错误 403)
The username you provided is not allowed to use the text-based Tomcat Manager (error 403) when deploying on remote Tomcat8 using Jenkins
我正在尝试使用 Jenkins 部署到容器插件在远程 Tomcat(远程计算机)上部署 WAR。
我在tomcat-users.xml
做了如下配置
<user username="deployer" password="deployer" roles="manager-gui,manager-script,admin" />
我已经在 Jenkins 部署容器插件中设置了正确的用户名密码和端口。该设置适用于本地 Tomcat。
但是对于远程 Tomcat 我不断收到以下错误:
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:555)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:686)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:699)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:174)
... 16 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://1.203.190.5:8080/manager/text/list
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:544) ... 19 more
这似乎是 Jenkins 的一个错误,但我通过在 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>
更改此文件以注释值:
<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>
这解决了问题。
我在使用 jenkins 通过容器插件将工件部署到 tomcat 时遇到了同样的问题,
解决方案:- 我在用户角色中添加了 manager-script 和 manager-gui 并提供对 webapps/* 目录的完全访问权限。它帮助我成功部署工件并能够使用 manager-app 查看它。
如果没有任何效果,只需在 tomcat-users.xml 文件中创建另一个用户,并分配 magnager-script 角色并将此用户凭据设置为 jenkins 。
在tomcat-users.xml文件中
<tomcat-users>
<user username="deployuser" password="deployuser" roles="manager-script" />
<user username="admin" password="admin" roles="manager-gui" />
</tomcat-users>
在Tomcat9中,您不需要添加任何manager-XXX角色。您所要做的就是添加用户并分配 manager-gui(用于 GUI 访问)和 manager-script(用于像 Jenkins 部署一样访问)。
此外,请确保编辑文件 /webapps/manager/META-INF/context.xml,以注释掉 valve 或为 allow[=14 定义适当的 reg ex =]属性
第一步:
我们需要更新:\webapps\manager\META-INF\context.xml。 Bcs 它只允许本地主机。如果知道具体的主机名或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" />
-->
</Context>
第 2 步:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
部署成功。
您只需将 jenkins IP 地址添加到阀门即可。
您需要更新:/webapps/manager/META-INF/context.xml。因为它只允许本地主机。如果您知道特定的主机名或 IP,则可以添加它,用 IP 地址替换 XXX.XXX.XXX.XXX。
保持安全非常重要。
<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|XXX.XXX.XXX.XXX" />
</Context>
之后,您需要重新启动tomcat。
$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh
来自 OS:Debian 10
我通过编辑文件 /opt/tomcat/conf/tomcat-users.xml
解决了这个问题并添加了 manager-script
角色
<role rolename="admin-gui,manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>
<user username="admin" password="password" roles="admin-gui,manager-gui,manager-script"/>
我正在尝试使用 Jenkins 部署到容器插件在远程 Tomcat(远程计算机)上部署 WAR。 我在tomcat-users.xml
做了如下配置<user username="deployer" password="deployer" roles="manager-gui,manager-script,admin" />
我已经在 Jenkins 部署容器插件中设置了正确的用户名密码和端口。该设置适用于本地 Tomcat。 但是对于远程 Tomcat 我不断收到以下错误:
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:555)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:686)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:699)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:174)
... 16 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://1.203.190.5:8080/manager/text/list
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:544) ... 19 more
这似乎是 Jenkins 的一个错误,但我通过在 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>
更改此文件以注释值:
<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>
这解决了问题。
我在使用 jenkins 通过容器插件将工件部署到 tomcat 时遇到了同样的问题, 解决方案:- 我在用户角色中添加了 manager-script 和 manager-gui 并提供对 webapps/* 目录的完全访问权限。它帮助我成功部署工件并能够使用 manager-app 查看它。
如果没有任何效果,只需在 tomcat-users.xml 文件中创建另一个用户,并分配 magnager-script 角色并将此用户凭据设置为 jenkins 。
在tomcat-users.xml文件中
<tomcat-users>
<user username="deployuser" password="deployuser" roles="manager-script" />
<user username="admin" password="admin" roles="manager-gui" />
</tomcat-users>
在Tomcat9中,您不需要添加任何manager-XXX角色。您所要做的就是添加用户并分配 manager-gui(用于 GUI 访问)和 manager-script(用于像 Jenkins 部署一样访问)。 此外,请确保编辑文件 /webapps/manager/META-INF/context.xml,以注释掉 valve 或为 allow[=14 定义适当的 reg ex =]属性
第一步: 我们需要更新:\webapps\manager\META-INF\context.xml。 Bcs 它只允许本地主机。如果知道具体的主机名或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" />
-->
</Context>
第 2 步:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
部署成功。
您只需将 jenkins IP 地址添加到阀门即可。
您需要更新:/webapps/manager/META-INF/context.xml。因为它只允许本地主机。如果您知道特定的主机名或 IP,则可以添加它,用 IP 地址替换 XXX.XXX.XXX.XXX。 保持安全非常重要。
<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|XXX.XXX.XXX.XXX" />
</Context>
之后,您需要重新启动tomcat。
$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh
来自 OS:Debian 10
我通过编辑文件 /opt/tomcat/conf/tomcat-users.xml
解决了这个问题并添加了 manager-script
角色
<role rolename="admin-gui,manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>
<user username="admin" password="password" roles="admin-gui,manager-gui,manager-script"/>