我有一个在默认用户 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