openssh 升级主要解决:
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的***。
OpenSSH 6.8版本和6.9版本的sshd中存在安全漏洞,该漏洞源于程序为TTY设备分配全局可写权限。本地***者可通过写入设备利用该漏洞造成拒绝服务(终端中断)。
openssh 简介:
1、OpenSSH 是SSH(Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。
2、OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。
3、OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。
openssh
1、OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进
程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。
环境部署:
时间同步
[root@localhost ~]#\cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -rf
echo '*/5 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn' >> /var/spool/cron/root
echo 'TIMEZONE="Asia/Shanghai"' > /etc/sysconfig/clock
/usr/sbin/ntpdate ntp.sjtu.edu.cn
创建软件存放目录
[root@localhost ~]# mkdir /home/softwares
软件包下载链路
[root@localhost softwares]# wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.1p1.tar.gz
[root@localhost softwares]# wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz
[root@localhost softwares]# wget https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz
关闭防火墙或者selinux
openssh 程序升级
1、停止 SSHD 服务
[root@localhost ~]# /sbin/service sshd stop
2、备份启动脚本
[root@localhost ~]# cp /etc/init.d/sshd /root/
3、卸载系统里原有Openssh
[root@localhost softwares]# rpm -qa openssh ##查询系统原安装的openssh包全部卸载。
[root@localhost softwares]# rpm -e openssh --nodeps
[root@localhost softwares]# rpm -e openssh-server --nodeps
[root@localhost softwares]# rpm -e openssh-clients --nodeps
4、解压安装zlib包:
[root@localhost softwares]# tar -zxvf zlib-1.2.8.tar.gz -C /usr/local/ #首先安装zlib库,否则会报zlib.c错误无法进行
#cd zlib-1.2.8 [root@localhost softwares]# cd /usr/local/zlib-1.2.8/
[root@localhost zlib-1.2.8]# ./configure
[root@localhost zlib-1.2.8]#make&&make install
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++这一步要是实际的版本是否安装,本人的版本时openssl-1.0.1e 所以不用安装,如果比1.0.1 版本底则需要安装+++
解压安装openssl包:
#tar-zxvfopenssl-1.0.1p.tar.gz
#cd openssl-1.0.1p
#./config shared zlib
#make
#make test
#make install
#mv /usr/bin/openssl /usr/bin/openssl.OFF
#mv /usr/include/openssl /usr/include/openssl.OFF ##该步骤可能提示无文件,忽略即可
#ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
#ln -s /usr/local/ssl/include/openssl /usr/include/openssl ##移走原先系统自带的
openssl
将自己编译产生的新文件进行链接。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5、配置库文件搜索路径
[root@localhost softwares]# openssl version -a
OpenSSL 1.0.1m 19 Mar 2015
built on: Sat Mar 21 04:11:47 2015
platform: linux-x86_64
options: bn(64,64) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -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
OPENSSLDIR: "/usr/local/ssl
6、解压安装openssh包:
先将将/etc/ssh的文件夹备份:
#mv/etc/ssh /etc/ssh_bak
[root@localhost softwares]# tar -zxvf openssh-7.1p1.tar.gz -C /usr/local/
[root@localhost softwares]# cd /usr/local/openssh-7.1p1/
[root@localhost openssh-7.1p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man
[root@localhost openssh-7.1p1]# make && make install
[root@localhost openssh-7.1p1]# ssh -V
OpenSSH_7.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
7、启动调试ssh
[root@localhost openssh-7.1p1]# /usr/sbin/sshd -d
debug1: sshd version OpenSSH_7.1, OpenSSL 1.0.1m 19 Mar 2015
debug1: private host key #0: ssh-rsa
SHA256:EqDJvZiq8JgG+nG/xsmZ6yrd3B+OoulgE5GhzSZcJHg
debug1: private host key #1: ssh-dss
SHA256:AmqP8tvvqy3t1dSy1P4ETqh8Poma40PmzDpTtipVIqQ
debug1: private host key #2: ecdsa-sha2-nistp256
SHA256:sebvQl7OXvlFsbBy9zuUYPwWfqJm47qYBi/IIcEA8Jk
debug1: private host key #3: ssh-ed25519
SHA256:niy1XbgnrydgeFXfMqVjkfRbUlZ4YeFsWof2cWoCBWc
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.
Cannot bind any address.
8、启动服务
[root@localhost openssh-7.1p1]# cp -p contrib/redhat/sshd.init /etc/init.d/sshd
//其他版本操作系统具体查看contrib对应目录和readme。
[root@localhost openssh-7.1p1]# chmod +x /etc/init.d/sshd
[root@localhost openssh-7.1p1]# chkconfig --add sshd
[root@localhost openssh-7.1p1]# cp sshd_config /etc/ssh/sshd_config (如提示覆盖,yes回车)
[root@localhost openssh-7.1p1]# cp sshd /usr/sbin/sshd (如提示覆盖,yes回车)
9、验证是否成功
[root@localhost openssh-7.1p1]service sshd start
[root@localhost openssh-7.1p1]ssh -V
OpenSSH_7.1p1, OpenSSL 1.0.1m 19 Mar 2015
此时可以尝试远程 ssh进去服务器,如果能连,并查看验证日志信息等确认无误。
查看ssh服务状态://以下配置redhat略有不同,具体情况具体解决。
[root@localhost openssh-7.1p1]# /etc/init.d/sshd status
连接正常。
+++++++++++++++++++++++++++++++++++++++++++++++++
[root@localhost openssh-7.1p1]#service sshd start
启动时候报错
[root@localhost openssh-7.1p1]# /etc/init.d/sshd restart
Stopping sshd: [确定]
/sbin/restorecon: lstat(/etc/ssh/ssh_host_key.pub) failed: No such file or directory
Starting sshd: [确定]
需要把/etc/init.d/sshd里面 #/sbin/restorecon /etc/ssh/ssh_host_key.pub 注销
启动sshd服务
[root@localhost openssh-7.1p1]service sshd start
成功
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Checking for service sshd
将下面改为yes 这样root 用户登录时不会再报而且root
也可以登陆
[root@localhost openssh-7.1p1]#root@192.168.3.154's password:
Permission denied (publickey,password,keyboard-interactive)
# vi /etc/ssh/sshd_config
PermitRootLogin yes
++++++++++++++重启机器之后需要重新拉起ssh 服务方可登陆
需要关闭selinux 和iptables 必须关闭 全都设置成开机自动关闭就可以登陆了,不然总是报没有权限!