Centos7升级Openssh8.1

目录

 

1,配置telnet

2,安装openssh

2.1 前置条件

2.2 卸载之前的openssh

2.3 安装

2.3 配置开机启动

2.4 验证

2.5 回滚

2.6 关闭telnet


 

说明:以下步骤是升级到7.9的,后来进行了更新,请看文档最后部分的8.1升级

1,配置telnet


为防止openssh升级失败。所以安装telnet。保证openssh升级失败也可以通过telnet连接服务器,进行恢复操作。并不用去机房

yum install -y telnet-server
yum install -y xinetd 
systemctl start telnet.socket
systemctl start  xinetd

默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容。或者可以添加一个可以登录的用户,登录并su到root用户

echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart telnet.socket


最后执行telnet ip进行登录即可

2,安装openssh


2.1 前置条件


需要安装zlib-devel,openssl-devel,可选安装pam-devel

yum install zlib-devel
yum install openssl-devel
yum install pam-devel

2.2 卸载之前的openssh


如果是rpm安装则:

cp -r /etc/ssh /etc/ssh.old #备份一些之前的文件
rpm -qa|grep openssh
rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64
rpm -qa|grep openssh


如果是其他方式,可以进入安装目录,执行:
make uninstall

2.3 安装


去官网下载安装包http://www.openssh.com/portable.html
上传到服务器并解压到一个目录

tar zxvf openssh-7.9p1.tar.gz
cd openssh-7.9p1
# 配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam
参数说明:
--sysconfdir=/etc/ssh:这可以防止安装配置文件 /usr/etc
--with-pam:此参数在构建中启用 Linux-PAM支持
# 编译
make
配置权限
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
# 安装
make install
#其他配置
install -v -m755 contrib/ssh-copy-id /usr/bin
#install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
#install -v -m755 -d /usr/share/doc/openssh-7.9p1
#install -v -m644 INSTALL LICENCE OVERVIEW README*
#install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1

#默认是22端口,但是不能root直接登录。如果想直接使用root登录执行以下命令
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

2.3 配置开机启动

cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
systemctl restart sshd

2.4 验证

ssh -V


2.5 回滚


如果之前是rpm包安装的。并且按照以上步骤操作,可以直接以下命令进行回滚

yum -y install openssh-clients
yum -y install openssh-server
yum -y install openssh

2.6 关闭telnet


恢复telnet的禁止root登录特权。如果之前关闭就关闭telnet

 

其他问题:

出现“PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail. Example PAM control files can be found in the contrib/ subdirectory

按照提示的路径找到redhat/sshd.pam,并复制到/etc/pam.d/sshd

 

一下升级是在Centos7上升级到openssh8.1的步骤
1,版本验证
ssh -V
openssl version
如果可以先使用yum升级下
yum update openssh -y

2,安装telnet防止安装失败
yum install -y telnet-server xinetd

systemctl start telnet.socket
systemctl start  xinetd
开机自启动:
systemctl enable xinetd
systemctl enable telnet.socket
#修改配置使root可以登录
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart xinetd
systemctl restart telnet.socket
#查看端口
netstat -lntp | grep 23

#然后可以用telnet的23端口登录系统,如果不行尝试关闭防火墙

3,安装openssl和openssh
下载安装包:

wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.1p1.tar.gz
wget -c https://ftp.openssl.org/source/openssl-1.0.2r.tar.gz

# 安装相关依赖
yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
yum install  -y pam* zlib*

# 创建安装目录
mkdir /data/tools -p
#将安装包放到安装目录下解压
tar xfz openssh-8.1p1.tar.gz
tar xfz openssl-1.0.2r.tar.gz

#openssl安装部分
#备份相关两个目录或文件
mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl /usr/include/openssl_bak
#正式安装
cd openssl-1.0.2r/
./config shared && make && make install
#查看安装结果 0表示没问题
echo $?
#创建软连接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
#重新加载新配置
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig
#查看新版本 如果显示"OpenSSL 1.0.2r  26 Feb 2019 "代表成功
openssl version

#安装openssh
#修改文件的默认用户
chown -R root.root openssh-8.1p1
#卸载之前的安装文件 旧的openssh
rpm -e `rpm -qa | grep openssh` --nodeps
#如果之前就是源码安装的,找到之前的安装包,在里面执行
make uninstall
#修改权限
chmod 600 /etc/ssh/ssh_host_*
#然后进入目录安装编译
cd openssh-8.1p1/
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords  --with-pam  && make 
#正式安装
make install
#注意我安装的时候,有两个选项不识别了GSSAPIAuthentication   GSSAPICleanupCredentials,这需要修改配置文件注释掉/etc/ssh/sshd_config
grep '^#GSSAPI*' /etc/ssh/sshd_config 
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no

#修改配置使root可以登录
grep "^PermitRootLogin"  /etc/ssh/sshd_config
 #显示结果为:PermitRootLogin yes
#确保配置文件中UsePAM为yes或者追加一个也可以
echo 'UsePAM yes' >> /etc/ssh/sshd_config
#其他配置,后三个可以不做
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-8.0p1
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.0p1

#从解压包openssh-8.1p1中复制文件
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
#修改执行权限
chmod +x /etc/init.d/sshd
#修改开启启动
chkconfig --add sshd
systemctl enable sshd
#移走之前的启动文件
mv  /usr/lib/systemd/system/sshd.service  /root/ssh_bak
#设置sshd服务开机启动
chkconfig sshd on
#启动关闭ssh的命令
systemctl stop sshd
systemctl start sshd
#查看监听
netstat  -lntp
#查看版本
ssh -V

4,测试
使用别的服务器登录22端口或者用telnet命令登录查看
telnet ip  22

#关闭之前添加的配置 删除pts/0  pts/1...
vi /etc/securetty

#验证重启服务器是否可以正常登录,如果没问题关闭telnet
systemctl stop telnet.socket
systemctl disable telnet.socket
systemctl stop xinetd.service
systemctl disable xinetd.service

你可能感兴趣的:(OS)