我在远程位置运行 Linux(CentOS 6.0)。它有动态 IP 地址,因此我安装了 noip2 服务并复制了文件 cp redhat.noip2.sh /etc/profile.d/noip.sh。
在这里你可以看到 noip.sh 脚本在重启后一直运行(看)。
此后,系统重新启动一次后,它就再也没有正确的 shell。因此,当我尝试远程 ssh 服务器时,我无法登录,也无法执行任何操作。有人能解决这个问题吗?以下是我尝试的详细信息:当我调试 ssh 时,我看到debug1: Authentication succeeded (password).
命令也已发送,但什么也没发生。我就是无法修复它。
全部失败:
ssh root@host 'rm -fr /etc/profile.d/noip.sh'
scp emptynoip.sh root@host:/etc/profile.d/noip.sh
ssh root@host /bin/sh
ssh root@host /bin/bash
ssh root@host --norc -i
ssh root@host -- --norc -i
ssh root@host bash --norc -i
ssh root@host /bin/bash -i './etc/profile.d/noip2 stop'
ssh root@host /bin/bash -i './etc/profile.d/noip stop'
ssh root@host /bin/bash -l './etc/profile.d/noip stop'
还有更多... 我尝试过的组合都失败了。有没有我可以尝试的单一选项?
答案1
两种可能的解决方案:
- 以其他用户身份登录,然后使用 sudo 或 su 删除 noip.sh
- 使用 sftp 删除 noip.sh
顺便提一下,关于动态 IP 问题dd客户端是一个更强大的解决方案,它支持许多服务、ifup/down 挂钩以及守护进程模式。
答案2
解决了。
脚步:
- 我亲自进入了服务器
- 然后我仍然无法登录,即使尝试物理登录,它总是询问登录提示
- 所以我按下 Shift 键进入 grub 菜单,但情况仍然一样,它总是询问登录提示(甚至不允许我更改运行级别)
解决方案:
- 启动时按 Shift 键
- Grub 菜单按 a
- 添加“init=/bin/sh”
shell 出现,然后应用 rm -fr /etc/profile.d/noip.sh(由于只读而失败)
安装、卸载 /
rm -fr /etc/profile.d/noip.sh 有效
初始化 6(失败)
关闭电源然后打开(解决了所有问题)
现在这个问题已经解决,现在没有问题了。希望它能在未来帮助到其他人。(永远不要在 /etc/profile.d/... 中放入任何东西)