centos 7.6 升级openssl_1.1.1j和openssh_8.6p1
1、安装介质
升级openssh需要以下依赖包
pam-devel、gcc、 zlib-devel、keyutils、、libcom、libsepol、pkg、libselinux、krb5、openssl-devel
通过配置yum源安装,或者本地rpm安装
openssl下载链接:
https://www.openssl.org/source/old/1.1.1/
openssh下载链接
http://openbsd.hk/pub/OpenBSD/OpenSSH/portable
2、安装telnet
安装telnet及ftp,防止出现问题无法远程和传输的问题。
telnet 安装
1、root登录,可以先检查是否安装了包:rpm -q telnet-server
2、安装超级服务;
rpm -ivh xinetd-2.3.14-38.el6.x86_64.rpm
3、运行命令:
rpm -ivh telnet-0.17-47.el6_3.1.x86_64.rpm
rpm -ivh telnet-server-0.17-47.el6_3.1.x86_64.rpm
4、
vi /etc/xinetd.d/telnet
disble=no
vi /etc/pam.d/login
注销该行
#account required pam_nologin.so
5、移除securetty文件
mv /etc/securetty /etc/securetty.bak
6、启动服务:
service xinetd restart
FTP 安装
1、root登录,检查是否安装:rpm -q vsftpd
2、安装服务:
rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm
3、启动服务:
service vsftpd start
安装OpenSSL
1、解压下载好的安装包。
tar -zxvf openssl-1.1.1c.tar.gz
2、切换到目标目录下。
cd /usr/local/openssl/openssl-1.1.1j
3、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下,执行命令:
./config --prefix=/usr/local/openssl
4、执行命令
./config -t
5、执行make,编译Openssl
make && make install
6、切换目录
cd /usr/local
7、设置依赖文件目录
ldd /usr/local/openssl/bin/openssl
8、查看OpenSSL的设置目录
which openssl
9、查看系统的OpenSSL版本信息
openssl version -a
10、备份原系统的文件
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
11、设置新的配置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误问题,这是由于openssl库的位置不正确造成的,解决办法如下:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
安装Openssh
解压
# tar -xf openssh-8.6p1.tar.gz
# cd openssh-8.6p1
编译
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --without-hardening
编译安装
# make && make install
修改配置文件
(1)备份sshd文件,重命名为sshd.bak
cp /etc/init.d/sshd /etc/init.d/sshd.bak
(2)复制配置文件、赋权、添加到开机启动项 (/ ssh/openssh-7.4p1为解压目录)
cd contrib/redhat
cp sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
备份原文件
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
查看安装后openssh版本
ssh -V
设置允许root用户登录(openssh升级后,root默认被禁用)
打开
vi /etc/ssh/sshd_config
文件,将PermitRootLogin设置为yes
重启SSH
service sshd restart
如果ssh启动时报错:
(Starting sshd:/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials)
将sshd_congfig 文件中的GSSAPIAuthentication、GSSAPICleanupCredentials两行用#号注释掉即可。
停止telnet和ftp服务
停止Telnet服务
1.修改配置文件
将vi /etc/xinetd.d/telnet文件中的disable= no修改为disable= yes
2.设置telnet开机不启动
chkconfig xinetd off
3.关闭telnet服务
/etc/init.d/xinetd stop
mv /etc/securetty.bak /etc/securetty
停止FTP服务
service vsftpd stop
停止服务
其他问题
1、低版本ssh无法连接问题
ssh8.6p1
服务器发送了一个意外的数据包
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1
1、要求客户升级SecureCRT版本至6.5或7.x,或更换最新版的Xshell、Putty等工具,即可正常登录
2、修改ssh配置,添加对原加密算法的支持:
在/etc/ssh/sshd_config配置文件中添加以下三行,并重启sshd服务;
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
2、centos7 sshd服务状态为activating(start)
现象:
如图,
centos7升级ssh7.4到8.1版本后,ssh连接不稳定,时断时续,systemctl status sshd查看服务状态为activating(start),查看/var/log/message里不断提示sshd.service holdoff time over,scheduling restart
原因:
/usr/lib/systemd/system/sshd.service 与systemd不兼容
处理办法:
mkdir /etc/ssh_bak
mv /usr/lib/systemd/system/sshd.service /etc/ssh_bak/
systemctl daemon-reload
sshd -t
systemctl restart sshd
systemctl status sshd
重启前看下:
sshd -t 检查下配置有没有问题
/var/log/message里sshd有没有继续报错,ssh -v root@ip检查下能否正常连接
以上正常后systemctl restart sshd