准备相关的包
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
