VirtualBox中Windows虚拟机配置GitLab Runner的SSH与Shell异常问题
解决Windows虚拟机GitLab Runner配置问题(OpenSSH+pwsh+无WSL)
一、修复pwsh作为OpenSSH默认Shell的SSH连接失败问题
修正默认Shell路径
执行注册表命令时,避免用$PSHOME环境变量(OpenSSH服务上下文可能无法解析),直接使用pwsh的绝对路径:New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force注:若pwsh安装路径不同,可在pwsh中执行
$PSHOME确认后替换重启OpenSSH服务
修改注册表后必须重启服务使配置生效:Restart-Service sshd排查连接细节
- 本地连接时直接用
ssh username@localhost,无需添加机器名,避免账户解析混乱 - 确认连接用的本地账户密码正确,且拥有虚拟机登录权限
- 查看事件查看器(Windows日志->应用程序)中的OpenSSH日志,定位具体拒绝原因(如路径错误、权限不足)
- 本地连接时直接用
二、解决GitLab Runner找不到bash的问题(无需WSL)
Git for Windows自带bash,只需将其路径加入系统环境变量即可:
定位Git bash路径
通常为C:\Program Files\Git\bin\bash.exe或C:\Program Files\Git\usr\bin\bash.exe添加到系统PATH
打开「控制面板->系统->高级系统设置->环境变量」,在系统变量的PATH中添加bash所在的文件夹路径(如C:\Program Files\Git\bin)验证配置
- 在pwsh中执行
bash --version,能正常输出版本信息即为配置成功 - 重启GitLab Runner服务或虚拟机,让环境变量完全生效
- 在pwsh中执行
三、GitLab Runner配置补充
确保config.toml中virtualbox executor的shell配置正确,示例:
[[runners]] name = "Windows VirtualBox Runner" url = "https://your-gitlab-instance.com/" token = "your-runner-token" executor = "virtualbox" [runners.virtualbox] vmname = "your-windows-vm" ssh_port = 22 ssh_user = "your-username" ssh_password = "your-password" [runners.shell] shell = "pwsh"
内容的提问来源于stack exchange,提问作者Poperton
相关产品推荐
相关产品推荐

