ein*_*lum 70 linux ssh bash remote-access
我正在通过 SSH 远程使用 GNU/Linux 系统。
我错误地在我的$HOME/.bash_profilescriot 中添加了一些导致错误的东西。(具体来说:我添加了一个exec foo命令而不是. foo, 应用于另一个没有执行权限的 bash 脚本,这会导致错误。)
现在我似乎无法通过 SSH、SCP 或 SFTP 进入我的机器:bash,我的登录 shell,尝试运行exec foo命令,得到错误并将我扔出去!我没有可以远程访问的任何其他帐户。
我可以做些什么来恢复对系统的访问?
额外细节:
sty*_*fly 130
如此处所述,您可以使用
ssh -t user@host bash --noprofile
Run Code Online (Sandbox Code Playgroud)
事实上,正如@JoL 建议的那样,您甚至不需要--noprofile,因为当 ssh 将 bash 作为另一个命令执行时,它不被视为登录 shell。运行ssh -t user@host bash只会读取RC文件;并且运行ssh -t user@host bash --norc甚至不会读取那些。
ken*_*orb 48
尝试 SSH 并运行sh而不是bash,例如
ssh user@host sh
Run Code Online (Sandbox Code Playgroud)
然后重命名 ( mv) 或编辑损坏的文件 ( ex/vi)。
che*_*ner 20
运行ssh -t host vi .bash_profile(或您选择的编辑器代替vi)并修复您的.bash_profile.
(-t可能不需要该选项,具体取决于您选择的编辑器。)
如果您确切地知道需要修复什么,您也许能够以非交互方式修复它。例如,像
printf 's/exec foo/. foo/\nwq\n' ssh host ed .bash_profile
Run Code Online (Sandbox Code Playgroud)