SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

下面介绍,如何在离线状态下升级linux(cenos7.3,内核3.10.0-514.el7.x86_64)ssh服务,执行安装的路径自定义,当前安装执行路径为/hoem/openssh。 注意:确保环境中有gcc编译器

升级zlib插件

zlib的作用是提供压缩传输支持,没有安装zlib,编译安装openssh时会报错:找不到zlib.h文件。

官网下载地址:http://www.zlib.net/, 当前下载版本:zlib-1.2.11.tar.gz

编译安装:

1.  #tar xzvf zlib-1.2.11.tar.gz
 #cd zlib-1.2.11
 #./configure --prefix=/usr/local/zlib
 #make
 #make install
 执行完成后,zlib被安装在/usr/local/zlib下。升级openssl插件
1. openssl作用:提供加密支持。
2. 官网下载地址:http://www.openssl.org,当前下载版本:openssl-1.0.2h.tar.gz
3. 编译安装:
 #tar xzvf openssl-1.0.2h.tar.gz
 #cd openssl-1.0.2h
 #./Configure --prefix=/usr/local/openssl
 #make
 进行 SSL 加密协议的完整测试,如果有报错信息,一定要找出原因,可能导致最终 SSH 不能使用
 #make test
 #make install

升级openssh

  • 官网下载地址:http://www.openssh.com,当前下载版本:openssh-7.9p1.tar.gz
  • 编译安装: #tar xzvf openssh-7.9p1.tar.gz #cd openssh-7.9p1 #./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr /local/openssl --with-md5-passwords
可能报错信息:
  **configure: error:OpenSSL headers missing - please install first or check config.log** 
  - 安装openssl、openssl-devel,rpm以及依赖包下载链接
  - 链接: https://pan.baidu.com/s/1BKNPi3SC2CG716kCUHl3ig 提取码: c3rp 
  - 下载完成后,执行安装命令:rpm -Uvh ./*.rpm --nodeps --force即可
  
  **configure 时提示 PAM 有错误**
  - 一般是因为系统中没有安装 pam-devel RPM 包,上一步链接中有pam-devel的rpm包
  - 下载,执行安装即可解决问题。

#make #make install

可能的报错信息:
 - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 - @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
 - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 - Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
 - It is required that your private key files are NOT accessible by others.
 - This private key will be ignored.
 - Error loading host key "/etc/ssh/ssh_host_ed25519_key": bad permissions
 - Could not load host key: /etc/ssh/ssh_host_ed25519_key
 - sshd: no hostkeys available -- exiting.
 - **make: [check-config] Error 1 (ignored)** 
 - 解决办法:#rm -rf /etc/ssh/ssh_host_*
           	#make install
           	#systemctl restart sshd
          	--如何服务重启失败,试试文末安装openssh的sh脚本

这样就完成了整个升级 SSH 的工作。 重启sshd服务:systemctl restart sshd 添加开机启动:systemctl enable sshd(保险起见) 验证:ssh -V

友情链接:linux_rpm包下载地址:https://centos.pkgs.org/ 安装openssh的脚本:

#!/bin/bash
#卸载旧的ssh
cp -r /etc/ssh /etc/ssh.old #备份
rpm -qa|grep openssh
rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64
rpm -qa|grep openssh

make uninstall

# 安装OpenSSH
install -v -m700 -d /var/lib/sshd
chown -v root:sys /var/lib/sshd
groupadd -g 50 sshd
useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd

#解压安装
tar -zxvf openssh-7.9p1.tar.gz
cd openssh-7.9p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
make

#修改相应文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key

#安装
make install

#配置
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-7.9p1
install -v -m644 INSTALL LICENCE OVERVIEW README*
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1

#根据自身需求改写配置文件。因为配置文件为初始配置文件。所以和之前的不一样。可以使用备份配置文件覆盖。
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

#开机自启动
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
systemctl restart sshd

#3 验证操作
ssh -V