首页 > 系统相关 >centos7 升级 openssh (用来避坑)

centos7 升级 openssh (用来避坑)

时间:2022-11-29 00:11:06浏览次数:70  
标签:sshd -- openssh 避坑 centos7 ssh data usr

是的,踩坑了,导致服务器远程登录不上去,最后只能想其他办法了。所以有必要记下来具体的操作。

环境

centos7.9, 自带的 openssh 为 7.4, 准备升级到 7.9p1.

编译 openssh

先编译 openssh, 根据漏扫报告,openssh 至少要7.8以上,这里用 7.9p1 下载地址是:

https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz?spm=a2c6h.25603864.0.0.686840ad7Rg8Ge

下载完成之后解压:

tar xzvf openssh-7.9p1.tar.gz

接下来准备编译它,先运行 ./configure ,发现少哪个组件就安装。比如说报少 zlib,就通过yum 安装。

yum install zlib-devel

configure 的完整参数是:

./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-selinux --with-tcp-wrappers

如果正常,就可编译了:

make

这里没有 make install 因为我想自己控制安装过程。而且,编译和运行可以在不同的服务器上。

安装 sshd

现在的主要难题是替换 sshd. 如果用下面的命令替换文件,

cp sshd /usr/sbin/

则会报错,无法替换,也就无法升级。

后来想了一个办法,sshd 不是一个服务吗?我可以修改服务配置文件,把 sshd 指向新编译出来的文件,再重启不就行了?等重启成功后,再用新编译的 sshd 替换掉旧的文件(位于 /usr/sbin/sshd),然后再把服务配置文件中的内容改回来,也就修改成功了。

操作如下:先创建一个目录,用于存放新的 sshd,再将文件复制进去,之所以不用 /root/ 下的路径,可能会有权限的问题.

mkdir -p /data/ssh/
cp sshd /data/ssh/sshd

再编辑服务的配置文件,/usr/lib/systemd/system/sshd.service,把 ExecStart=/usr/sbin/sshd -D $OPTIONS 这一行,改成 ExecStart=/data/ssh/sshd -D $OPTIONS 。然后重启服务器,这时候悲剧发生,ssh 再也连不上服务器了! 因此,绝对不能在这个时候重启,而要调整好配置,再重启。下面是调整配置的地方。

  1. 调整 ssh 相关 key 的权限。
cd /etc/ssh/
ll *key
# 有三个 key 文件,把它们的权限调整成 600.
chmod 600 *key

上面如果不调整权限,则会报下面的错,导致无法登录。
error: @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
error: Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.

  1. 然后再编辑 sshd_config, 把下面两行注释掉:

GSSAPI options

GSSAPIAuthentication yes
GSSAPICleanupCredentials no
注释后像这样:

GSSAPI options

GSSAPIAuthentication yes

GSSAPICleanupCredentials no

找到 PermitRootLogin yes 一行,本来是被注释掉的,现在要取消注释。

  1. 确保 /etc/empty/sshd/ 目录存在,且 owner 为 root, 像下面这样:
    [root@localhost ssh]# ll /var/empty/
    total 0
    drwx--x--x. 2 root root 6 Aug 9 2019 sshd

这时候再重启系统,就能登录了。

之后就是替换原 sshd 的操作。
先备份原文件:

mkdir /data/backup/
cp /usr/sbin/sshd /data/backup/

再把文件复制过去:

cp /data/ssh/sshd /usr/sbin/

再次编辑,/usr/lib/systemd/system/sshd.service,恢复 sshd 执行文件的路径。然后重启服务器。

标签:sshd,--,openssh,避坑,centos7,ssh,data,usr
From: https://www.cnblogs.com/qkhh/p/16934223.html

相关文章

  • centos7 docker离线安装教程
    离线安装包下载docker离线安装时需要两个安装包:selinux包、docker包,下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/selinux包下载https:/......
  • CentOS7一键脚本安装docker并创建ES集群(docker版本)
    ​CentOS7一键脚本安装docker并创建ES集群(docker版本)原创 yuanfan2012 WalkingCloud 2022-11-2819:59 发表于浙江收录于合集#Linux学习笔记288个#CentOS......
  • Centos7 搭建Jupyter NoteBook教程
    (目录)以下操作基于root用户1.Anaconda31.1下载wgethttps://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh1.2安装bashAnaconda3-5.0.1-Linux-......
  • openssh快速安装(win10)
    背景不时会有安装openssh的需求。故简要记录下,以做备忘。OSwindows10LSTC方法方法1-自动安装如果目标机器能上网,可以自动安装:通过搜索,"添加可选功能“,选择openssh服......
  • CentOS7 部署Greenplum6
    环境准备3个节点,每个节点8核、32G内存、1TB硬盘对应ip和角色划分为:#主master192.168.31.101gp1#从master,4个主segment4个从segment192.168.31.102gp2#4个主segm......
  • Centos7.X下Docker环境安装并配置加速镜像
    1、安装yuminstall-ydocker2、开启Docker服务systemctlstartdocker.service3、查看安装版本dockerversion4、设置开机启动systemctlenabledocker.servi......
  • Linux实验2:CENTOS7下的用户管理和权限设置
    一、实验目的掌握创建用户和用户组的方法;掌握文件的权限设置方法。二、实验任务1.新增加一个组名为student,密码为123。2.新增加一个用户名为zhouxingchi,其附属组......
  • centos7 部署Prometheus
    前言:一、前置环境说明1、关闭firewallsystemctlstopfirewalld.servicesystemctldisablefirewalld.service2、关闭selinuxvim/etc/selinux/configSELINUX=disa......
  • OS + Centos7 LDAP / centos8 ldap
    s环境cents8.6,软件ldap2.4.46[root@scts08tldap]#yumlist*ldap*Lastmetadataexpirationcheck:2:30:54agoonMon28Nov202201:25:57AMPST.Installed......
  • Centos7下redis5安装、部署、开机自启
    不知道为何,使用centos7安装redis4.0以上版本的yum源一直找不到,官网也没有,具体原因没有去调查,所以这里使用源码安装做个记录 1.由于Redis是用C语言编写,所以编译......