主机系统centos7.3.1161升级openssh到当前最新版7.7p1以后使用root用户无法登陆,一直提示用户名密码错误(实际上用户名密码是对的)。下面对这个坑进行说明。

step 1 、升级前提说明:

1、升级OpenSSH后,原有公钥失效,信任关系需要重新配置;

2、升级过程需要停止sshd服务,会导致ssh和sftp无法使用;

3、升级OpenSSH影响的业务有:QDG同步、Mediation及现场自己写的同步脚本等;

4、升级需要关闭防火墙服务;

5、升级需要关闭selinux服务;

6、升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包(推荐通过系统ISO安装)

7、升级过程中需要刷新lib库:ldconfig -v;

8、升级顺序:顺序是zlib库-> openssl -> openssh;

9、升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel;

step 2 、版本升级说明

zlib-1.2.3 > zlib-1.2.11

OpenSSL 1.0.1e > OpenSSL 1.0.2o

OpenSSH 5.3p1 > OpenSSH 7.7p1

step 3、关闭防火墙和selinux

systemctl status  firewalld.service

检查防火墙状态,如果在运行停掉。

systemctl stop firewalld.service

关闭开机自启动

systemctl disable firewalld

step 4 、验证selinux是否关闭

getenforce

如果未关闭,关闭之

setenforce 0

上面只是临时关闭了,重启后不生效。下面改配置文件,使永久生效。

vi /etc/selinux/config

修改:

SELINUX=disabled

保存退出。

step 5、安装包准备

1、软件包下载地址:

zlib下载地址:

http://www.zlib.net/

zlib-1.2.11.tar.gz

https://www.openssl.org/source/

https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

openssh-7.7p1.tar.gz

2、创建上传目录

# mkdir /soft/zlib

# mkdir /soft/openssl

# mkdir /soft/openssh

3、bin模式上传介质

step 6、开启telnet

临时开启telnet服务,用于升级ssh,同时方总升级ssh过程中主机无法登录。

1、挂载操作系统镜像

2、安装ftp所需系统包

yum -y install xinetd telnet telnet-server

3、改/etc/pam.d/login配置文件

编辑/etc/pam.d/login,注释掉下面这行,允许root用户通过telnet登陆:

#auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

4、编辑/etc/securetty

编辑/etc/securetty,添加超级用户登陆设备。

备份/etc/securetty文件:

cp /etc/securetty /etc/securetty.bak

添加超级用户登陆设备至/etc/securetty文件:

echo "pts/1" >> /etc/securetty

echo "pts/2" >> /etc/securetty

echo "pts/3" >> /etc/securetty

echo "pts/4" >> /etc/securetty

echo "pts/5" >> /etc/securetty

echo "pts/6" >> /etc/securetty

echo "pts/7" >> /etc/securetty

echo "pts/8" >> /etc/securetty

echo "pts/9" >> /etc/securetty

echo "pts/10" >> /etc/securetty

echo "pts/11" >> /etc/securetty

5、编辑/etc/pam.d/remote

编辑/etc/pam.d/remote,注释下列这行,开启root用户远程登陆:

vi /etc/pam.d/remote

#auth required pam_securetty.so

6、重启telnet和xinetd服务

PS:telnet服务依赖于xinetd服务。

systemctl start telnet.socket

systemctl start xinetd

PS:如果开启了防火墙,需要将23端口(系统默认23为telnet端口)添加到防火墙允许的端口的列表中。

7、开启telnet和xinetd开机自动启动

systemctl enable xinetd.service

systemctl enable telnet.socket

8、验证开机启动

systemctl list-unit-files |grep telnet

systemctl list-unit-files |grep xinetd

step 7、安装openssh升级依赖包

yum -y install gcc make perl zlib zlib-devel pam pam-devel

检查相关依赖包是否安装

rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"

step 8、正式开始升级openssh

PS: telnet登录操作,升级顺序:zlib库-> openssl -> openssh。

1、停止sshd服务

systemctl stop sshd

systemctl is-active sshd

2、卸载系统里原有Openssh

查看系统原有openssh包

rpm -qa | grep openssh

根据上面查询出的结果,卸载系统里原有Openssh

rpm -e openssh --nodeps

rpm -e openssh-server --nodeps

rpm -e openssh-clients --nodeps

验证

rpm -qa | grep openssh

3、编译安装zlib

解压安装zlib

cd /soft/zlib

tar -xzvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure --prefix=/usr/local/zlib

make&&make install

验证zlib安装是否成功

cd /usr/local/zlib

ll

要包含include、lib、share上个目录。

编辑配置文件/etc/ld.so.conf.d/zlib.conf

vi /etc/ld.so.conf.d/zlib.conf

加入如下内容后保存退出

/usr/local/zlib/lib

刷新库文件

ldconfig -v,刷新库文件,加载刚才编译安装的zlib生成的库文件

ldconfig -v

4、升级OpenSSL

解压安装openssl包

cd /soft/openssl

tar -xzvf openssl-1.0.2o.tar.gz

编译openssl

cd openssl-1.0.2o

./config shared zlib

make

make test

make install

重命名现有文件目录

mv /usr/bin/openssl /usr/bin/openssl.OFF

创建ssl相关软连接

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

编辑配置文件/etc/ld.so.conf.d/ssl.conf

vi /etc/ld.so.conf.d/ssl.conf

加入如下内容后保存退出

/usr/local/ssl/lib

刷新库文件

ldconfig -v,刷新库文件,加载刚才编译安装的ssl生成的库文件

ldconfig -v

查看openssl版本

openssl version -a

5、升级OpenSSH

重命名原有配置文件

mv /etc/ssh /etc/ssh.bak

解压openssh

cd /soft/openssh

tar -xzvf openssh-7.7p1.tar.gz

cd openssh-7.7p1

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --mandir=/usr/share/man --with-zlib=/usr/local/zlib

上面为一行。

make

make install

验证openssh版本

/usr/local/openssh/bin/ssh -V

设置sshd服务开机自动启动

拷贝配置文件

cp /soft/openssh/openssh-7.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

修改配置文件权限

chmod u+x /etc/init.d/sshd

添加sshd服务

chkconfig --add sshd

验证开机启动

chkconfig --list|grep sshd

替换配置文件

cp /soft/openssh/openssh-7.7p1/sshd_config /etc/ssh/sshd_config

编辑sshd_config文件

将subsystem sftp路径变更为实际路径/usr/local/openssh/libexec/sftp-server

vi /etc/ssh/sshd_config

#Subsystem sftp /usr/libexec/sftp-server

注释掉,换为如下一句:

Subsystem sftp /usr/local/openssh/libexec/sftp-server

拷贝命令

cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd

拷贝sshd命令至/usr/bin/

cp /usr/local/openssh/bin/ssh /usr/bin/

ssh -V

拷贝ssh-keygen

cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

修改配置文件/etc/ssh/sshd_config

vi /etc/ssh/sshd_config

PasswordAuthentication yes #取消这一行注释

PermitRootLogin yes #添加PermitRootLogin yes行

PS:如果不允许root用户远程直接登录,这里配置为PermitRootLogin no;

重启sshd服务

service sshd restart

systemctl is-active sshd

查看22端口监听

netstat -an |grep LISTEN|grep :22

本地登录测试

ssh root@ocs1

root@ocsdb1[/data/openssh]#ssh root@ocsdb1

root@ocsdb1's password:

Permission denied, please try again.

root@ocsdb1's password:

使用root用户,其实密码是对的,报错。

如果是用普通用户:

root@ocsdb1[/data/openssh]#ssh wufan@ocsdb1

wufan@ocsdb1's password:

Last login: Sat May 19 12:24:33 2018 from 192.168.254.36

wufan@ocsdb1[/home/wufan]$

是可以的。

下面修改:

vi /etc/init.d/sshd

在$SSHD $OPTIONS && success || failure这句话前面加一句:

OPTIONS="-f /etc/ssh/sshd_config"

配置如下:

echo -n $"Starting $prog:"

OPTIONS="-f /etc/ssh/sshd_config"

$SSHD $OPTIONS && success || failure

RETVAL=$?

保存退出。

重启sshd服务:

systemctl restart sshd

再次登录就可以了。

linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题相关推荐

  1. openssh rpm包_100台CentOS7要升级OpenSSH怎么办?

    背景 现在有 100 台 Centos7 需要升级 OpenSSH 到 8.3,怎么办呢?一台台的操作显然不符合我摸鱼的风格,既然每台操作都一样,Ansible Roles 就有用武之地了. 正常升级 ...

  2. 100台CentOS7要升级OpenSSH怎么办?

    100台CentOS7要升级OpenSSH怎么办? https://www.toutiao.com/i6898152133523227144/?tt_from=weixin&utm_campa ...

  3. Linux禁止root用户远程登陆

    认识sshd_congfig配置文件 [root@testpm ~]# vim /etc/ssh/sshd_config​#Port 22 #监听端口,默认监听22端口 [默认可修改]#Address ...

  4. Centos7.5 升级openssh到9.0p1

    背景: 公司定期的漏洞安全扫描发现系统服务存在问题,需要升级OpenSSH. [root@somsapidev ~]# cat /etc/redhat-release CentOS Linux rel ...

  5. 梦幻西游手游微信号登陆不上服务器,梦幻西游手游为什么进不去 进不去登陆不上解决方法...

    有玩家发现自己的梦幻西游手游进不去,这是什么原因呢,下面蟹么么为大家带来的是梦幻西游手游为什么进不去 进不去登陆不上解决方法. 梦幻西游手游为什么进不去 进不去登陆不上解决方法 备注:如果以下几种方法 ...

  6. SP2升级到SP3 重起后 出现死循环 无法登陆系统

    盗版XP,看看这个,即可解决: 升级到 WINDOWS XP SP3 后无法开机的解决方法: 为了让系统有更好的安全性和稳定性(据微软发布SP3的说法),自从微软xp的SP3补丁(300多M)发布后, ...

  7. php 7.0 curl图片上传,PHP 升级到7.4.0后,通过curl上传文件http_code报412

    我将PHP环境升级到7.4.0后,使用curl向微信公众平台上传图片不能成功,代码如下所示,切换到php7.3.x版本运行正常.php7.4.0版本下,在http_post方法的倒数第二行打印相关信息 ...

  8. Ubunto20.04安装MySQL并修改root用户密码(Linux安装mysql root用户无法登陆)

    写在前面 请确保你使用的是 sudo apt-get install mysql-server 指令安装的mysql,此mysql版本默认最新版,即mysql8.0(2020年) 如果你是手动安装my ...

  9. linux root登录失败可以锁定,Centos 用户登录失败N次后锁定用户禁止登陆

    针对linux上的用户,如果用户连续3次登录失败,就锁定该用户,几分钟后该用户再自动解锁 Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁 ...

最新文章

  1. Android深度探索与驱动开发(一)
  2. 面试高频题:单链表的逆置操作/链表逆序
  3. Apache Ant自动化脚本
  4. 如何测试java支持的最大内存
  5. BLE-NRF51822教程11-手机动态修改设备名
  6. 红黑树(二)之 C语言的实现
  7. @RequestBody如何使用
  8. HTTP 1.1与HTTP 1.0的比较
  9. 从控制台读取password - C#
  10. Composer最近升级后导致无法下载包的问题解决办法
  11. 跳过密码卸载OfficeScan
  12. 今天,正式开始行走边境线!
  13. php paypal支付接口文档,php 实现PayPal支付
  14. 大圆航线、恒向线绘制
  15. 「ds」网络操作系统和分布式操作系统之间的区别
  16. wsimport 用法详解
  17. 迪米特法则 php,迪米特法则(The Law of Demeter) -解道Jdon
  18. 大白菜U盘重装win7系统教程,PE重装win7系统教程
  19. lisp 非对称缓和曲线_CAD画缓和曲线lisp程序
  20. hive olap 数据仓库_数据仓库:OLTP与OLAP查询

热门文章

  1. sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差
  2. C#关键字详解第一节
  3. 2018-2019-1 20165214 《信息安全系统设计基础》第八周学习总结
  4. k上升段,对于排列问题的处理
  5. 四:客服端防护HTTP发送请求类
  6. js实现小时钟,js中Date对象的使用?
  7. MFC的UDP编程实现
  8. ASP.NET页面——页面事件
  9. JS实现下一天的显示
  10. 手机上图片信息怎么拉一个矩形框_华为手机EMUI系统隐藏的10个功能,上手体验后,实用性无敌了...