使用Jenkins在远程Tomcat 8上部署时,不允许您提供的用户名使用基于文本的Tomcat管理器(错误403

ezykj2lf  于 2022-11-02  发布在  Jenkins
关注(0)|答案(8)|浏览(201)

我正在尝试使用Jenkins deploy to container插件在远程Tomcat(远程计算机)上部署WAR。

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

我已经在Jenkins deployer容器插件中设置了正确的用户名、密码和端口。对于本地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
sr4lhrrt

sr4lhrrt1#

我在使用jenkins通过容器插件将工件部署到tomcat时也遇到了同样的问题,解决方案:-我在用户角色中添加了manager-script和manager-gui,并提供了对webapps/* 目录的完全访问权限。它帮助我成功地部署了工件,并能够使用manager-app查看它。

axzmvihb

axzmvihb2#

My OS:我的操作系统
我通过编辑文件/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"/>
fcipmucu

fcipmucu3#

您只需要将Jenkins IP地址添加到阀中。
您需要更新:/webapps/manager/META-INF/context.xml。因为它只允许本地主机。如果你知道具体的主机名或IP,你可以添加它,用IP地址替换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
wdebmtf2

wdebmtf24#

如果不起作用,只需在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>

c7rzv4ha

c7rzv4ha5#

在Tomcat 9中,您不需要添加任何manager-XXX角色。您所要做的就是添加用户并分配manager-gui(用于GUI访问)和manager-script(用于Jenkins部署之类的访问)。此外,请确保编辑文件**/webapps/manager/META-INF/context.xml**,以注解掉valve或为allow属性定义适当的reg ex

jfewjypa

jfewjypa6#

步骤1:我们需要更新:\webapps\manager\ meta\context. xml. Bcs它只允许localhost.如果你知道具体的主机名或者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>

第二步:

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

部署成功。

suzh9iv8

suzh9iv87#

我也遇到了同样的问题。把用户名改为“admin”应该就可以了。

5n0oy7gb

5n0oy7gb8#

这似乎是一个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>

这解决了问题。

相关问题