如何从RHEL9虚拟机远程访问Win11上的OpenShift Local(CRC)
解决从RHEL9虚拟机远程连接Windows上OpenShift Local(CRC)的问题
核心问题分析
你遇到的两个错误根源:
- 证书不匹配:CRC默认证书仅包含集群内部IP(10.217.4.1)和localhost,未包含Windows机器的外部IP(192.168.1.156)
- 412错误:API服务器收到请求时,检查到Host头与证书中的SAN(Subject Alternative Names)不匹配,直接拒绝连接
步骤1:更新CRC API服务器证书,添加外部IP
- 进入CRC虚拟机内部:
crc ssh
- 切换到root权限:
sudo -i
- 配置API服务器使用自定义证书:
oc patch kubeconfigs.config.openshift.io/cluster --type=merge -p '{"spec":{"kubeAPIServer":{"servingCerts":{"namedCertificates":[{"names":["192.168.1.156"],"servingCertificate":{"name":"api-external-cert"}}]}}}}'
- 生成适配外部IP的自签证书:
openssl req -x509 -newkey rsa:4096 -keyout /tmp/tls.key -out /tmp/tls.crt -days 365 -nodes -subj "/CN=192.168.1.156" -addext "subjectAltName = IP:192.168.1.156"
- 创建证书Secret:
oc create secret tls api-external-cert --cert=/tmp/tls.crt --key=/tmp/tls.key -n openshift-config
- 重启API服务器使配置生效:
oc rollout restart deployment/kube-apiserver -n openshift-kube-apiserver
等待3-5分钟,确认API服务器重启完成。
步骤2:优化端口转发规则(可选)
当前用9000端口转发到6443,建议直接转发6443端口,避免端口不一致带来的潜在问题:
- 删除原有转发规则:
netsh interface portproxy delete v4tov4 listenaddress=192.168.1.156 listenport=9000
- 添加新的转发规则:
netsh interface portproxy add v4tov4 listenaddress=192.168.1.156 listenport=6443 connectaddress=127.0.0.1 connectport=6443
- 更新Windows防火墙规则,允许6443端口的入站TCP连接。
步骤3:在RHEL9虚拟机上配置证书信任(可选,避免不安全连接)
- 将CRC虚拟机中生成的
/tmp/tls.crt复制到Windows机器,再传到RHEL9虚拟机。 - 添加证书到系统信任链:
sudo cp tls.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust extract
步骤4:测试远程登录
在RHEL9虚拟机执行登录命令:
# 如果用6443端口 oc login -u developer -p developer https://192.168.1.156:6443 # 若保留9000端口则用 oc login -u developer -p developer https://192.168.1.156:9000
此时证书匹配,无需跳过TLS验证,也不会再出现412错误。
内容的提问来源于stack exchange,提问作者aocferreira
相关产品推荐
相关产品推荐

