centos7 ssh默认为openssh7.4p1版本:html
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@localhost ~]# [root@localhost ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 [root@localhost ~]#
1、安装telnet服务
1.为了防止ssh链接失败没法登陆到主机,先安装一个telnetmysql
yum install -y telnet-server xinetd
2.运行telnet服务c++
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd.service
3.默认状况下,系统是不容许root用户telnet远程登陆的。若是要使用root用户直接登陆,需设置以下内容:sql
echo -e 'pts/0\npts/1\npts/2\npts/3' >>/etc/securetty
4.重启telnet服务shell
systemctl restart xinetd.service
5.测试
能够中止sshd服务或者杀掉sshd进程,远程终端将没法链接主机,可使用telnet ip链接,则配置成功.
systemctl stop sshd.service
telnet ip
也可使用xshell链接,修改协议为telnet,端口改成23端口,如图配置.centos
2、安装依赖包ssh
1.切换到telnet方式登陆,之后的操做都在telnet终端下操做,防止ssh链接意外中断形成升级失败.socket
2.升级须要几个组件,有些是和编译相关的等tcp
# yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
3.安装pam和zlib等.测试
# yum install -y pam* zlib*
3、下载openssh包和openssl的包
openssh下载地址:
https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
openssl下载地址:
https://ftp.openssl.org/source/
此处我下载的是新的版本,分别是:
openssh-8.0p1.tar.gz
openssl-1.0.2r.tar.gz
4、开始安装 openssl:
1.开始安装openssl,把安装包上传至/root/soft目录下,并解压.
[root@localhost soft]# tar xfz openssl-1.0.2r.tar.gz
如今是系统默认的版本,等会升级完毕对比下
[root@localhost soft]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017
2.备份下面2个文件或目录(若是存在的话就执行)
[root@localhost soft]# ll /usr/bin/openssl -rwxr-xr-x. 1 root root 555288 Aug 9 09:38 /usr/bin/openssl [root@localhost soft]# [root@localhost soft]# mv /usr/bin/openssl /usr/bin/openssl_bak [root@localhost soft]# [root@localhost soft]# ll /usr/include/openssl total 1864 -rw-r--r--. 1 root root 6146 Aug 9 09:38 aes.h -rw-r--r--. 1 root root 63204 Aug 9 09:38 asn1.h -rw-r--r--. 1 root root 24435 Aug 9 09:38 asn1_mac.h -rw-r--r--. 1 root root 34475 Aug 9 09:38 asn1t.h ... [root@localhost soft]# [root@localhost soft]# mv /usr/include/openssl /usr/include/openssl_bak [root@localhost soft]#
3.编译安装新版本的openssl
[root@localhost soft]# cd openssl-1.0.2r [root@localhost openssl-1.0.2r]# ./config shared && make && make install 以上命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题 [root@localhost openssl-1.0.2r]# echo $? 0 [root@localhost openssl-1.0.2r]#
4.下面2个文件或者目录作软连接
[root@localhost openssl-1.0.2r]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl [root@localhost openssl-1.0.2r]# ln -s /usr/local/ssl/include/openssl /usr/include/openssl [root@localhost openssl-1.0.2r]# ll /usr/bin/openssl lrwxrwxrwx. 1 root root 26 Oct 31 23:14 /usr/bin/openssl -> /usr/local/ssl/bin/openssl [root@localhost openssl-1.0.2r]# ll /usr/include/openssl -ld lrwxrwxrwx. 1 root root 30 Oct 31 23:14 /usr/include/openssl -> /usr/local/ssl/include/openssl [root@localhost openssl-1.0.2r]#
5.命令行执行下面2个命令加载新配置
[root@localhost openssl-1.0.2r]# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf [root@localhost openssl-1.0.2r]# /sbin/ldconfig
6.查看确认版本,没问题
[root@localhost openssl-1.0.2r]# openssl version OpenSSL 1.0.2r 26 Feb 2019
5、安装openssh
1.上传并解压openssh
[root@localhost soft]# tar xfz openssh-8.0p1.tar.gz [root@localhost soft]# cd openssh-8.0p1 [root@localhost openssh-8.0p1]# chown -R root.root /root/soft/openssh-8.0p1
2.命令行删除原先ssh的配置文件和目录,而后配置、编译、安装
[root@localhost openssh-8.0p1]# rm -rf /etc/ssh/* [root@localhost openssh-8.0p1]# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include \ --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make && make install [root@localhost openssh-8.0p1]# echo $? 0 [root@localhost openssh-8.0p1]#
3.安装完成后,须要对配置进行修改,否则可能会遇到root登陆不上去的状况.最终添加以下两个内容,其余的不要动
[root@localhost ~]# grep "^PermitRootLogin" /etc/ssh/sshd_config PermitRootLogin yes [root@localhost ~]# grep "UseDNS" /etc/ssh/sshd_config UseDNS no [root@localhost ~]#
4.从原先的解压的包中拷贝一些文件到目标位置(若是目标目录存在就覆盖)
[root@localhost openssh-8.0p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd [root@localhost openssh-8.0p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam [root@localhost openssh-8.0p1]# chmod +x /etc/init.d/sshd [root@localhost openssh-8.0p1]# chkconfig --add sshd [root@localhost openssh-8.0p1]# systemctl enable sshd #把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响咱们重启sshd服务 [root@localhost openssh-8.0p1]# mv /usr/lib/systemd/system/sshd.service /tmp/
5.设置sshd服务开机启动
[root@localhost openssh-8.0p1]# chkconfig sshd on Note: Forwarding request to 'systemctl enable sshd.socket'. Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket. [root@localhost openssh-8.0p1]# systemctl restart sshd.service [root@localhost openssh-8.0p1]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 6139/rpc.mountd tcp 0 0 0.0.0.0:41811 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1869/sshd tcp 0 0 0.0.0.0:46303 0.0.0.0:* LISTEN 6108/rpc.statd tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - [root@localhost openssh-8.0p1]#
6.测试版本.都正常
[root@localhost openssh-8.0p1]# ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 26 Feb 2019
7.测试没问题后能够把telnet服务关闭了
[root@localhost ~]# systemctl disable xinetd.service [root@localhost ~]# systemctl stop xinetd.service [root@localhost ~]# systemctl disable telnet.socket Removed symlink /etc/systemd/system/sockets.target.wants/telnet.socket. [root@localhost ~]# systemctl stop telnet.socket [root@localhost ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::3306 :::* LISTEN 3798/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1/systemd [root@localhost ~]#
参考文档:https://www.cnblogs.com/caidingyu/p/11100804.html