最近客戶處有一些linux操做系統安裝了較舊的SSH,存在版本漏洞,小研究了一下,安裝最新版本的OPENSSH,能夠平滑升級。linux
ssh登陸到要安裝的服務器上,查看當前版本
[root@localhost ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
在/目錄下建立/tools目錄,經過FTP工具上傳安裝文件到該目錄下(文件能夠到官網去下載)
mkdir /tools
[root@localhost tools]# ls -ltrh
total 9.2M
-rw-r--r--. 1 root root 1.5M Jun 28 09:14 openssh-7.2p2.tar.gz
-rw-r--r--. 1 root root 5.1M Jun 28 09:14 openssl-1.0.2h.tar.gz
-rw-r--r--. 1 root root 2.7M Jun 28 09:14 zlib-1.2.8.tar.gz
-----------------------------------------配置YUM---------------------------------------------------------centos
插入系統安裝光盤,配置yum源。(也能夠上傳ISO到服務器,而後mount –o loop <ISO文件路徑> /mnt)
[root@localhost ~]# mount /dev/cdrom1 /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# touch local.repo
[root@localhost yum.repos.d]# vi local.repo
[root@localhost yum.repos.d]# cat local.repo
[local]
name=centos
gpgcheck=0
enable=1
baseurl=file:///mnt
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
local | 4.0 kB 00:00 ...
local/group_gz | 220 kB 00:00 ...
local/filelists_db | 5.8 MB 00:00 ...
local/primary_db | 4.4 MB 00:00 ...
local/other_db | 2.7 MB 00:00 ...
Metadata Cache Created
-------------------升級前先安裝好TELNET服務器,以防止SSH重啓沒法登陸------------------
使用yum安裝Telnet服務
yum install telnet-server服務器
修改/etc/xinetd.dtelnet文件disable=no(原有值爲yes)
sed -i '12 s/yes/no/' /etc/xinetd.d/telnetssh
配置容許root用戶遠程登陸,而後重啓服務
[root@localhost xinetd.d]# echo 'pts/0' >>/etc/securetty
[root@localhost xinetd.d]# echo 'pts/1' >>/etc/securetty
[root@localhost xinetd.d]# service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
-----------------------使用telnet登陸系統--------------------------------------------------ide
用ROOT帳戶使用telnet登陸系統執行修改OPENSSH操做工具
-----------------------使用yum移除openssh--------------------------------------------------oop
yum remove openssh<會刪除較多依賴包>ui
或者url
rpm -e openssh-server-5.3p1-94.el6.x86_64idea
rpm -e openssh-askpass-5.3p1-94.el6.x86_64
------------------------安裝zlib-----------------------------------------------------------
cd /tools
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib && make && make install
-------------------------安裝openssl-------------------------------------------------------
tar -xvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/usr/local/openssl
make depend
make
make install
-----------------------安裝openssh-----------------------------------------------------------------------------
tar -xvf openssh-7.2p2.tar.gz
cd openssh-7.2p2
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords --without-hardening && make && make install
-------------------------拷貝SSHD服務文件--------------------------------------------------
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
--------------------------修改SSHD服務文件-------------------------------------------------
修改SSHD文件
vi /etc/init.d/sshd
修改如下內容
SSHD=/usr/sbin/sshd 爲 SSHD=/usr/local/openssh/sbin/sshd
/usr/bin/ssh-keygen -A 爲 /usr/local/openssh/bin/ssh-keygen -A
保存退出
加入到系統服務
[root@localhost openssh-7.2p2]# chkconfig --add sshd
查看系統啓動服務是否增長改項
[root@localhost openssh-7.2p2]# chkconfig --list |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
---------------------------替換SSH及SSL命令------------------------------------------------
mv /usr/bin/ssh /usr/bin/ssh.old
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@localhost ~]# ssh -V
OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016
[root@localhost ~]# openssl version -a
OpenSSL 1.0.2h 3 May 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/openssl/ssl"
升級到新版本後,默認不容許root用戶遠程登陸
cat /etc/ssh/sshd_config
修改
PermitRootLogin yes
從新啓動SSHD服務。
service sshd start
完成手動升級