Gitlab CI/CD流水线连接自定义端口OCI实例失败求助
解决Gitlab CI/CD连接自定义SSH端口OCI实例的主机解析错误
问题原因
这个错误的根源是SSH命令格式错误:当使用自定义端口时,不能将端口与IP用冒号拼接后作为主机名传入——SSH会把<server_ip>:<server_port>整体当作主机名去DNS解析,自然无法找到对应主机。
解决方案
使用SSH的
-p参数指定端口
这是最直接的修正方式,把端口通过-p参数单独传递,而非拼接在IP后:ssh -p <server_port> <username>@<server_ip>对应到Gitlab CI的
.gitlab-ci.yml配置中,脚本部分应写成:deploy_to_oci: stage: deploy script: - ssh -p 2222 ops@10.0.0.5 "mkdir -p /opt/deploy"通过SSH配置文件预设主机端口
如果需要多次连接该OCI实例,可以在Gitlab Runner的执行环境中修改~/.ssh/config文件,预设主机的端口信息:Host oci-deploy HostName <server_ip> Port <server_port> User <username>之后在CI脚本里直接使用预设的主机名即可连接:
ssh oci-deploy "echo '连接成功'"
额外检查项
- 确认OCI实例的安全组、防火墙已经开放了自定义端口的SSH入站规则;
- 在Gitlab Runner所在机器上手动执行修正后的SSH命令,验证网络连通性和权限是否正常,再放到流水线中执行。
内容的提问来源于stack exchange,提问作者Mahesh More
相关产品推荐
相关产品推荐

