问题描述
同时满足以下现象时可能是该问题:
现象一:telnet实例22端口没有问题。
现象二:如图所示,SSH登录之后,输出了欢迎语句,代表已经成功连接,单后续自动关闭连接通道。
问题原因
可能/etc/profile
和/root/.bashrc
配置文件中包含exit
或其他能够导致退出登录的命令。
可能是由于误修改文件或者遭受恶意篡改、挖矿等。
解决方案
尝试使用VNC登录服务器,检查/etc/profile 和 /root/.bashrc (普通用户则需要检查/home/<UserNmae>/.bashrc)是否包含exit或其他能够导致退出登录的命令。
若VNC无法登录服务器,可通过云助手执行以下命令进行检查。
执行命令过滤exit相关内容。
grep -Hin -C 3 'exit' /etc/profile /root/.bashrc # 扩展使用,如果profile和bashrc没有的话则执行这个,但要仔细辨别过滤的内容 grep -iHn -C3 "exit" /etc/profile /root/.bashrc /etc/bash.bashrc ~/.bash_profile ~/.bash_login ~/.profile /etc/environment $(find /etc/profile.d/ -type f) ~/.bash_logout
说明有些流程控制语句中也会有exit指令,但是否影响登录需要拿到完整的文件进行分析,或更改
-C
参数来显示更多上下文信息进行判断。如果有筛选到对应的exit字段的话,则需要使用sed进行注释掉,比如/root/.bashrc有一个exit字段,那么运行以下命令:
sed -i '/^exit/s/^/#/' /root/.bashrc
重要sed
命令加上-i
参数会直接修改文件的,若不确定是否会正确修改的话,建议先备份或者不使用-i
参数,确认输出结果为所需结果时再添加-i
参数。
该文章对您有帮助吗?