出现问题的前一天还好好的,第二天早上打算继续搞没弄完的服务,结果远程连接服务器的时候出现如题的错误。
解决思路如下:
由于服务器在机房,所以先在远程尝试,看看是否有办法解决
1、ping服务器的ip,检查是否可以通过
显然易见是可以ping通的,但这并不能说明什么。
2、telnet 22端口查看是否可以通
在远程的cmd中执行:telnet ip 端口号
出现这种情况,可能22端口没开,或者说ssh服务没启动,去服务器检查防火墙,ssh服务是否正常,但我并不是这样,我telnet 完端口号后会出现一个连接的窗口,之后秒退,回到命令行,就像成功之后马上断开,在网上查了很多帖子也没有什么好的办法,只能去服务器里检查。
3、检查ssh服务是否正常
服务器正常的话,可以通过:service sshd status
命令检查ssh服务是否启,我是因为服务器不知道什么问题,输入用户名密码后出现黑屏只有左上角一个光标在闪,无奈只好重新启动的服务器(建议能不重启服务区尽量不要重启),启动后需开启ssh服务,输入命令:service sshd startus,出现如下错误。
接下来通过命令:journalctl -u sshd
来查看日志
发现共享库被破坏了,接着输入:ldd /usr/sbin/sshd
查看sshd的lib依赖
并没有发现什么,接着journalctl -u sshd
来查看日志,在日志中我们发现,缺少libcrypto.so.10这个库。
输入命令:ls /usr/lib64/libcrypto.so -l
,来查看是否真的缺少这个包,发下真的没有libcrypto.so.10这个库,那么原因找到!
4、添加libcrypto.so.10库
思路一:
首先,找到通版本正常环境下的服务器,命令:rpm -qf /usr/lib64l/ibcrypto.so.10
查看这个库是由哪个rmp包提供的(无正常环境可直接百度)。
发现是在openssl-libs-1.0.1k-19.el7.x86_64提供的,插入系统盘或者将openssl-libs-1.0.1k-19.el7.x86_64.rpm包存入U盘或光盘中,lsblk
命令查看盘符信息,找到相应的盘符,输入命令:mount /dev/盘符名 /mnt
将光盘挂载,命令升级/安装 openssl包:rpm -Uvh openssl-libs-1.0.1k-19.el7.x86_64.rpm
,升级成功。按理来说问题应该得到解决,重启ssh服务,发现仍然起不来,只能换一总思路解决。
PS:拔U盘的时候记得取消挂载,命令:umount /dev/磁盘名
思路二:
对比现有正常环境,查看libcrypto.so.10文件
发现需要软连接libcrypto.so.1.0.2k这个文件(不同版本可能不一样),我便去镜像中的openssl-libs-1.0.1e-60.el7.x86_64.rpm包中找到libcrypto.so.1.0.2k文件,将其存放在U盘中,挂载U盘,步骤同上一样,将U盘的libcrypto.so.1.0.2k文件拷贝到/usr/lib
路径下,接着进行软连接
ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.10
重启ssh服务,问题解决,远程连接成功!