Windows11下Vagrant2.4.0 SSH权限拒绝与rsync同步错误求助
Vagrant权限拒绝问题解决(Windows 11 + Vagrant 2.4.0)
环境
- Windows 11
- Vagrant 2.4.0
- 通过单Vagrantfile创建多台虚拟机,Vagrantfile代码:
Vagrant.configure("2") do |config| config.hostmanager.enabled = true config.hostmanager.manage_host = true ### DB vm #### config.vm.define "db01" do |db01| db01.vm.box = "eurolinux-vagrant/centos-stream-9" db01.vm.hostname = "db01" db01.vm.network "private_network", ip: "192.168.56.15" db01.vm.provider "virtualbox" do |vb| vb.memory = "600" end end ### Memcache vm #### config.vm.define "mc01" do |mc01| mc01.vm.box = "eurolinux-vagrant/centos-stream-9" mc01.vm.hostname = "mc01" mc01.vm.network "private_network", ip: "192.168.56.14" mc01.vm.provider "virtualbox" do |vb| vb.memory = "600" end end ### RabbitMQ vm #### config.vm.define "rmq01" do |rmq01| rmq01.vm.box = "eurolinux-vagrant/centos-stream-9" rmq01.vm.hostname = "rmq01" rmq01.vm.network "private_network", ip: "192.168.56.13" rmq01.vm.provider "virtualbox" do |vb| vb.memory = "600" end end ### tomcat vm ### config.vm.define "app01" do |app01| app01.vm.box = "eurolinux-vagrant/centos-stream-9" app01.vm.hostname = "app01" app01.vm.network "private_network", ip: "192.168.56.12" app01.vm.provider "virtualbox" do |vb| vb.memory = "800" end end ### Nginx VM ### config.vm.define "web01" do |web01| web01.vm.box = "ubuntu/jammy64" web01.vm.hostname = "web01" web01.vm.network "private_network", ip: "192.168.56.11" web01.vm.provider "virtualbox" do |vb| vb.gui = true vb.memory = "800" end end end
问题现象
- 执行
vagrant up多次后虚拟机启动成功,但vagrant reload时出现rsync同步错误:
Error: vagrant@127.0.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
- 执行
vagrant ssh db01或vagrant ssh web01均提示权限拒绝 - 已尝试设置
set VAGRANT_PREFER_SYSTEM_BIN=0,问题未解决
解决步骤
1. 临时登录虚拟机
针对web01(已开启GUI)
直接通过VirtualBox图形界面操作:
- 打开VirtualBox,选中
web01虚拟机,点击启动 - 登录界面输入默认账号:用户名
vagrant,密码vagrant
针对无GUI的虚拟机(db01/mc01等)
临时开启图形界面登录:
- 打开VirtualBox,选中目标虚拟机,点击「设置」
- 切换到「显示」选项卡,勾选「启用图形控制器」,保存后重启虚拟机
- 启动后用默认账号
vagrant/vagrant登录
2. 修复SSH权限问题
登录虚拟机后,执行以下命令修正权限(Vagrant对SSH相关权限要求严格):
# 进入vagrant用户目录 cd ~ # 设置.ssh目录权限为700 chmod 700 .ssh # 设置authorized_keys文件权限为600 chmod 600 .ssh/authorized_keys # CentOS/Stream 9系统重启sshd服务 sudo systemctl restart sshd # Ubuntu系统(如web01)执行此命令重启服务 sudo systemctl restart ssh
3. 解决rsync同步错误
rsync报错本质是SSH权限问题,修复上述权限后,重新执行vagrant reload即可正常同步。如果仍有问题,可尝试:
- 检查本地Vagrant密钥权限:执行
vagrant ssh-config查看私钥路径,在Git Bash中执行chmod 600 私钥路径设置权限为600 - 临时禁用自动同步:在Vagrantfile中添加
config.vm.synced_folder ".", "/vagrant", disabled: true,执行vagrant reload即可跳过同步
4. 终极重置方案(上述方法无效时)
执行以下命令重置虚拟机,会清除现有虚拟机并重新创建:
vagrant destroy -f vagrant up
内容的提问来源于stack exchange,提问作者Ham Apke Hai Kon
相关产品推荐
相关产品推荐

