无法执行Rundeck CLI命令,连接超时问题求助
问题描述
已安装Rundeck CLI,创建.rd目录并配置rd.conf文件如下:
export RD_URL=https://rundeck.url:4440 export RD_TOKEN=rundecktoken export RD_DEBUG=1
执行CLI命令时抛出连接超时错误,错误栈:
# Including extension: org.rundeck.client.tool.commands.repository.Plugins # Including extension: org.rundeck.client.tool.commands.enterprise.license.License # Including extension: org.rundeck.client.tool.commands.enterprise.cluster.Cluster # Including extension: org.rundeck.client.ext.acl.Acl java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:607) at okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128) at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295) at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207) at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226) at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at org.rundeck.client.util.StaticHeaderInterceptor.intercept(StaticHeaderInterceptor.java:38) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at org.rundeck.client.util.StaticHeaderInterceptor.intercept(StaticHeaderInterceptor.java:38) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154) at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) at org.rundeck.client.util.Client.checkErrorDowngradable(Client.java:166) at org.rundeck.client.util.Client.apiCallDowngradable(Client.java:606) at org.rundeck.client.tool.commands.RdToolImpl.apiCallDowngradable(RdToolImpl.java:107) at org.rundeck.client.tool.commands.RdToolImpl.apiCall(RdToolImpl.java:78) at org.rundeck.client.tool.extension.BaseCommand.apiCall(BaseCommand.java:24) at org.rundeck.client.tool.commands.Executions.list(Executions.java:264) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at picocli.CommandLine.executeUserObject(CommandLine.java:1972) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) at picocli.CommandLine.execute(CommandLine.java:2078) at org.rundeck.client.tool.Main.main(Main.java:155) Suppressed: java.net.SocketTimeoutException: connect timed out ... 47 more
同时使用curl请求该HTTPS URL也出现连接超时,需解决此问题。
排查与解决步骤
1. 验证基础网络连通性
- 执行
ping rundeck.url(或直接用服务器IP),确认主机能解析并连通目标服务器。若ping不通,排查子网路由、防火墙规则或DNS配置。 - 用
telnet rundeck.url 4440或nc -zv rundeck.url 4440测试端口开放状态。若连接被拒绝/超时,检查Rundeck服务器的防火墙(iptables/ufw等)是否放行4440端口,或确认服务是否监听该端口。
2. 确认Rundeck服务状态
- 在Rundeck服务器上执行
systemctl status rundeckd(systemd环境),确认服务正常运行。若未启动,排查服务启动日志(通常在/var/log/rundeck/rundeck.log)修复启动问题。 - 检查Rundeck配置文件
rundeck-config.properties中的server.https.port,确认与RD_URL中的端口一致。若使用HTTPS,需确认SSL证书配置正确,服务能正常加载证书。
3. 检查DNS解析(使用域名时)
- 在CLI主机执行
nslookup rundeck.url或dig rundeck.url,确认解析到的IP是Rundeck服务器的正确地址。若解析错误,修正本地DNS配置或域名解析记录。
4. 配置代理(若环境需代理)
- 若CLI主机需通过代理访问外部服务,在
rd.conf中添加代理变量:
也可设置系统级export RD_PROXY_HTTP=http://proxy.host:port export RD_PROXY_HTTPS=http://proxy.host:port export RD_PROXY_NO_PROXY=localhost,127.0.0.1,rundeck.urlHTTP_PROXY/HTTPS_PROXY变量,确保curl和Rundeck CLI均能使用代理。
5. 临时调整超时时间测试
- 执行CLI命令时增加超时参数:
curl测试用rd executions list --timeout 30curl -m 30 https://rundeck.url:4440,若仍超时,说明不是超时时间过短问题。
6. 验证SSL证书信任(HTTPS场景)
- 若Rundeck使用自签名证书,可临时禁用证书验证测试(生产环境不建议):
curl测试加export RD_SSL_VERIFY=false-k参数忽略证书验证。若忽略后能连接,需将自签名证书导入CLI主机的系统信任存储。
内容的提问来源于stack exchange,提问作者Vanaan
相关产品推荐
相关产品推荐

