1.環境準備:
OS系統:redhat 7.4
2.備份配置文件:
cp -rf /etc/ssh /etc/ssh.bak
cp -rf /usr/bin/openssl /usr/bin/openssl.bak
cp -rf /etc/pam.d /etc/pam.d.bak
cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak
3.安裝GCC編譯器
GCC離線安裝包如下:
我們可以按照下列順序依次安裝:
?????? rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm
rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm
rpm -ivh kernel-headers-3.10.0-862.el7.x86_64.rpm
rpm -ivh glibc-headers-2.17-222.el7.x86_64.rpm
rpm -ivh glibc-devel-2.17-222.el7.x86_64.rpm
rpm -ivh cpp-4.8.5-28.el7.x86_64.rpm
rpm -ivh gcc-4.8.5-28.el7.x86_64.rpm
也可以直接用這一條rpm? -ivh? *.rpm --nodeps --force安裝
安裝完成后,用gcc -v驗證
4. 編譯安裝per(安裝openssl需要)
安裝包為:perl-5.34.0.tar.gz
解壓:tar -zxvf perl-5.34.0.tar.gz
cd perl-5.34.0
安裝配置:./Configure -des -Dprefix=/usr/local/perl
編譯安裝:make && make test && make install?? (這一步在make test步驟有點慢,大概15分鐘左右)
添加環境變量:
echo "export PERL_HOME=/usr/local/perl" >> /etc/profile
echo "export PATH=\$PERL_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile
版本驗證:perl -v
5. 編譯升級zlib
安裝包為:zlib-1.3.1.tar.gz
解壓:tar -zxvf zlib-1.3.1.tar.gz
安裝配置:cd zlib-1.3.1 && ./configure --prefix=/usr/local/zlib
編譯:make -j 2
測試軟件:make test
安裝:make install
添加庫文件:echo '/usr/local/zlib/lib' >> /etc/ld.so.conf.d/zlib.conf
ldconfig -v
6. 編譯升級openssl
安裝包為:openssl-1.1.1v.tar.gz
解壓:tar -zxvf openssl-1.1.1v.tar.gz
安裝配置:cd openssl-1.1.1v && ./config --prefix=/usr/local/openssl -d shared
編譯:make -j 2
安裝:make install
添加庫文件:echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v |grep ssl
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/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
openssl version
7. 編譯安裝openssh
安裝包為:openssh-9.8p1.tar.gz
解壓安裝包:tar -zxvf openssh-9.8p1.tar.gz
卸載舊的sshd服務(切記不能重啟或者關掉遠程工具):yum remove openssh
配置安裝:cd openssh-9.8p1 && ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl/ --with-zlib=/usr/local/zlib
編譯以及安裝:make -j 4 && make install
cp contrib/redhat/sshd.init /etc/init.d/sshd
ll /etc/init.d/
chkconfig --add sshd
配置文件修改:
echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "X11UseLocalhost no" >> /etc/ssh/sshd_config
echo "XAuthLocation /usr/bin/xauth" >> /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
將新的配置復制到指定目錄:
?????? cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
?????? cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
版本驗證:ssh -V
sshd服務重啟:systemctl restart sshd
???????????????????? ? systemctl status sshd
reboot重啟服務器后能再次連接,查看服務正常systemctl status sshd
碰到的報錯:在make install 安裝openssh時碰到文件權限太大,需要用下面命令修改文件權限后再次make install
[root@localhost openssh-9.8p1]# chmod 600 /etc/ssh/ssh_host_rsa_key
[root@localhost openssh-9.8p1]# chmod 600 /etc/ssh/ssh_host_ecdsa_key
[root@localhost openssh-9.8p1]# chmod 600 /etc/ssh/ssh_host_ed25519_key