启动Code Ready Containers时遇SSH握手失败及virsh控制台错误
解决CRC启动SSH连接重置及virsh控制台PTY错误
问题现象
- 启动Code Ready Containers(CRC)时出现错误:
ssh: handshake failed: read tcp 127.0.0.1:41804->127.0.0.1:2222: read: connection reset by peer - 使用virsh控制台访问CRC实例时提示:
internal error: character device serial0 is not using a PTY
环境信息
- 主机操作系统:Fedora Linux 40(Server Edition)
- CRC版本:2.43.0+268795,OpenShift 4.17.1,MicroShift 4.17.1
- virsh版本:libvirt 10.1.0命令行工具,支持QEMU/KVM
解决步骤
1. 修复CRC虚拟机的Serial设备PTY配置
用virsh编辑CRC虚拟机的配置文件:
virsh edit crc
找到<serial>节点,确保配置为PTY类型,替换为以下内容:
<serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial>
保存退出后,重启libvirtd服务:
sudo systemctl restart libvirtd
2. 重置CRC的SSH密钥与连接配置
先停止运行中的CRC实例:
crc stop
删除本地缓存的CRC SSH密钥:
rm -rf ~/.crc/machines/crc/id_rsa*
重新启动CRC并启用调试日志排查:
crc start --log-level debug
3. 检查端口占用与防火墙规则
验证2222端口是否被其他进程占用:
ss -tulpn | grep 2222
如果有占用,终止对应进程,或者修改CRC的SSH端口:
crc config set ssh-port <自定义端口号>
同时确保libvirt服务的防火墙规则已放行:
sudo firewall-cmd --add-service=libvirt --permanent && sudo firewall-cmd --reload
4. 重置CRC虚拟机(可选,仅当以上步骤无效时)
注意:此操作会清除CRC虚拟机的所有数据,请提前备份重要内容。
crc delete crc setup crc start
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

