目录

 

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 -y2,安装telnet防止安装失败
 yum install -y telnet-server xinetdsystemctl 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 -V4,测试
 使用别的服务器登录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