openssl,openssh升级

准备相关的包

openssh: http://www.openssh.com/portable.html
openssl:http://www.openssl.org/source/
pam:http://pkgs.org/centos-6/centos-x86_64/
zlib: http://zlib.net/

一、简单版

1、备份以下文件:

cp -rp /etc/ssh /home/soft/ssh/
cp -rp /etc/sysconfig/sshd /home/soft/ssh/sysconfig
cp -rp /etc/pam.d/sshd /home/soft/ssh/pam.d
cp -rp /usr/sbin/sshd /home/soft/ssh/sbin

安装备用连接通道 Telnet

yum -y install telnet-server xinetd

# 配置telnet服务

cat > /etc/xinetd.d/telnet << EOF

service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}

EOF

# 启动服务

systemctl start xinetd

systemctl enable xinetd

2、安装依赖包

yum update -y
yum -y remove openssh openssh-server openssh-clients
yum install -y gcc  gcc-c++ zlib zlib-devel  pam* pam-devel*

3、安装软件包
cd openssh-10.0p1

./configure --with-zlib --with-ssl-dir=/usr --with-pam --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh

make && make install

cp contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

# 添加系统服务 chkconfig --add sshd

chkconfig sshd on

兼容旧版本

vim /etc/ssh/sshd_config

HostKeyAlgorithms ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

PermitRootLogin yes

二、复杂版

1、升级zlib
# tar -zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11
#CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/zlib
#make && make install

2、更新pam的rpm包。不然configure openssh的时候会报错

yum install pam* pam-devel*
注意:以下安装时,请务必再开一个SSH窗口连接所需要升级的服务器,避免ssh升级失败后,无法连接服务器。

3、编译安装openssl

删除旧版本

#rpm -e `rpm -qa | grep openssl` --allmatches --nodeps
# tar -zxvf openssl-1.0.2l.tar.gz
# cd openssl-1.0.2l
#./config -fPIC --prefix=/usr/local/openssl/ --openssldir=/usr/local/openssl/ shared zlib-dynamic enable-camelia
#make && make install

# mv /usr/bin/openssl /usr/bin/openssl.old

# mv /usr/include/openssl /usr/include/openssl.old

# 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 version

查看openssl版本显示OpenSSL 1.0.2l  25 May 2017

解决升级openssl后yum问题:

#cd openssl-1.0.2l

#cp libssl.so.1.0.0 libcrypto.so.1.0.0 /usr/lib64/

# ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so

# ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10 

# ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so

# ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10

4、编译安装openssh

删除旧版本

# rpm -e `rpm -qa | grep openssh` --allmatches --nodeps   或  yum remove openssh
# tar -zxvf openssh-7.5p1.tar.gz 
# cd openssh-7.5p1

# ./configure --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh

#make && make install

#ssh -V

复制启动脚本到/etc/init.d

# cp /home/openssh-xxx/contrib/redhat/sshd.init /etc/init.d/sshd

加入开机自启

# chkconfig --add sshd

开启root登录:
vi /etc/ssh/sshd_config
把PermitRootLogin去掉#后,改为:PermitRootLogin yes

5、直接启动ssh服务。
service sshd start