由于 .bashrc 错误,Vagrant 框被锁定。我可以使用 Vagrantfile 重新进入吗?

由于 .bashrc 错误,Vagrant 框被锁定。我可以使用 Vagrantfile 重新进入吗?

我有一个在默认用户 vagrant 下运行的 vagrant box。我使用 Putty 和密钥文件访问 shell。我在 Windows 上。

我将此命令添加到 .bashrc 的末尾

if [[ ! $TERM =~ screen ]]; then
    exec tmux
fi

当我开始会话时,努力自动启动 tmux。

但是现在 shell 在加载 tmux 后就退出了。在它退出之前我没有机会做任何事情。

我一直在 Reddit 上听取建议https://www.reddit.com/r/linuxquestions/comments/ahvdwn/locked_out_of_shell_by_command_in_bashrc_can_i/

因此,我从登录方面尝试了很多方法,但没有任何效果。

所以我的问题是,我可以使用 Vagrantfile 通过替代配置访问该框吗?我可以绕过该框的内部设置吗?该设置是关闭密码访问、无 root 访问权限、vagrant 用户使用 ssh 密钥访问、无 ftp(仅使用安全用户的 sftp)。

答案1

在 Linux 下,以下命令将授予访问权限:

vagrant ssh-config > my_ssh_config
ssh -q -F my_ssh_config vagrant@broken-host '/bin/bash --norc --noprofile'

在 Windows 上,我认为您必须使用 plink.exe 来实现类似的功能。祝您好运。

答案2

有一种方法可以在 vagrant 机器外部修复 .bashrc,而无需编辑 Vagrantfile。您可以使用scp命令使用另一个副本替换虚拟机内现有的 .bashrc。

$scp -P 2222 -i <path_to_the_private_key_file> -r .bashrc [email protected]:/home/vagrant/.bashrc

相关内容